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

Flutter中向List<List>添加List<int>时出现列表引用异常问题求助

问题原因

Dart中的列表是引用类型,当你执行listOfDigits.add(digits)时,并没有将digits列表的内容复制一份存入listOfDigits,而是把digits列表的内存引用添加了进去。这意味着listOfDigits里的所有子列表,本质上都指向同一个内存地址的列表。后续对digits的任何修改(添加元素、清空),都会同步反映到所有引用它的子列表上。

解决方案

有两种常用的修复方式,任选其一即可:

方式1:添加digits的副本到listOfDigits

在添加时,创建digits的副本存入listOfDigits,而不是原引用。可以用以下几种方式创建副本:

  • 扩展运算符 [...digits]
  • List.from(digits)
  • digits.toList()

修改后的按钮代码:

listOfDigits.add([...digits]); // 创建副本添加
digits.clear();
setState(() {});

方式2:添加后重新初始化digits

不使用clear()清空原列表,而是直接创建一个新的空列表赋值给digits,这样原列表的引用会被保留在listOfDigits中,后续操作的是全新的列表:

修改后的按钮代码:

listOfDigits.add(digits);
digits = []; // 重新初始化新列表
setState(() {});
验证效果

修改后,第三次添加数字7时,listOfDigits会变成[[1,8,-9], [7]],之前的子列表不会被修改,符合预期。

内容的提问来源于stack exchange,提问作者Sarmed MQ Berwari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:09:59