Has*_*sen 1 foreach dart flutter
我只是想用来将forEacha中的所有值设置List为false,但我不明白为什么它不起作用。我创建了一个固定长度的填充列表,如下所示:
List<bool> myList = List<bool>.filled(6, false);
Run Code Online (Sandbox Code Playgroud)
然后我将一个值设置为true:
setState(() => myList[3] = true);
Run Code Online (Sandbox Code Playgroud)
然后,我尝试再次将所有值重置为false,但是从
setState(() {
myList.forEach((val) => val = false);
print(myList);
});
Run Code Online (Sandbox Code Playgroud)
I/flutter (29049): [false, false, false, true, false, false]
您可以在forEach此处检查为什么不能更新其中的值的答案:List.forEach无法修改元素?
Dart没有变量引用,所有元素都作为对对象而不是变量的引用传递。(换句话说,Dart像Java和JavaScript一样,纯粹是“共享呼叫”)。
这意味着forEach回调的e参数只是一个普通的局部变量,对其赋值在回调之外无效。迭代器也是如此:它们返回可迭代对象中的值,但此后没有对可迭代对象的引用。
您可以filled使用创建列表所使用的方法来执行所需的操作。
setState(() {
myList = List<bool>.filled(myList.length, false);
print(myList);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |