提问人:Sarmed MQ Berwari 提问时间:7/29/2023 更新时间:7/29/2023 访问量:72
Flutter 将 List<int> 添加到 List<List>
Flutter add List<int> to List<List>
问:
我有有状态的小部件,我想创建数字列表,然后将它们作为列表广告到另一个列表,
我初始化列表 ' 迟到的列表数字; late List listOfDigits;
@override
void initState() {
digits = [];
listOfDigits = [];
super.initState();
}`
我有带有控制器名称 = 数字的文本文件,以及将数字添加到数字列表的按钮:digits.add(int.parse(number.text)); setState(() {});
另一个按钮将数字列表添加到 listOfDigits 并清除数字列表:
listOfDigits.add(digits)
digits.clear();
setState(() {});
第一次创建我得到的数字列表:[[]] 当我创建像 [1,8,-9] 这样的第二个数字时,我得到:[[1,8,-9]] 对于这第三次,任何数字(例如 7)添加到数字中,它都会将 otamitcly 添加到列表中,并且如下所示: [[1,8,-9,7],[1,8,-9,7]]
我尝试了与提供商相同的方法,我得到了相同的结果
答:
1赞
Bruno Kinast
7/29/2023
#1
您的问题是对象在 Dart(以及大多数语言)中是“通过引用传递”的。
digits
并且都是 类型的实例。当您这样做时,您每次都会将相同的实例添加到列表中。当你这样做时,你删除了其中的所有项目,并且由于它包含对 的同一实例的引用,它也是空的。listOfDigits
List
listOfDigits.add(digits)
digits
digits.clear()
listOfDigits
digits
您可以做的是创建整数列表的副本(一个新实例)并将其传递给 ,这样当您清除 时,您不会清除 中的那个。listOfDigits
digits
listOfDigits
为此,可以使用或创建 的新列表。List.from
digits
// List.from creates a new list with the same values as `digits`.
listOfDigits.add(List.from(digits));
digits.clear();
setState(() {});
新列表:
listOfDigits.add(digits);
// Here, instead of clearing the same list inside `listOfDigits`,
// you are simply creating a new one for that variable (and keeping
// the old instance unmodified).
digits = [];
setState(() {});
评论
digits.clear()
digits ≠ []