You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart列表出现异常结果如何解决?赋值后两列表同步变化问题

Dart列表赋值后修改一个另一个同步变化的原因及解决办法

在Dart里,List属于引用类型,不是int、bool这类值类型。当你执行list2 = list1时,并没有把list1里的元素复制一份生成新列表,而是让list2这个变量和list1指向内存里的同一个列表实例。

这就像两个人共用同一扇门的钥匙,不管谁开门进去改动房间里的东西,另一个人再开门看到的都是改动后的状态。所以你修改list1的元素,本质上是在操作那个共享的列表对象,list2作为同一个对象的引用,自然会显示相同的内容。

如果想让list2成为独立的列表,修改其中一个不影响另一个,需要创建原列表的副本,常用方法有几种:

  • 使用List.from()方法创建副本:
    list2 = List.from(list1);
    
  • 使用展开运算符(写法更简洁):
    list2 = [...list1];
    
  • 调用列表的toList()方法(适用于已有列表生成新副本):
    list2 = list1.toList();
    

修改后的示例代码:

List list1 = [];
List list2 = [...list1]; // 创建独立副本

list1.add(1);

print(list1); // 输出 [1] 
print(list2); // 输出 []

内容的提问来源于stack exchange,提问作者Mohammed Hamdan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:35:18