gpt4 book ai didi

flutter - 除非我打印它,否则不在 .map() 中执行 setState

转载 作者:IT王子 更新时间:2023-10-29 07:10:56 24 4
gpt4 key购买 nike

所以当我尝试不使用 print 时,代码不会执行,但是当包含 print 时,代码“正常”运行,是否有另一种不使用 print 的编码方式?

不工作

x.map((v) {
setState(() {
_userList.add(v.data['name']);
});
});

工作

print(x.map((v) {
setState(() {
_userList.add(v.data['name']);
});
}));

最佳答案

假设 x 是一个 List,那么这是预期的行为。 map 返回一个lazy iterable。这意味着在迭代映射列表之前不会实际执行任何操作。来自documentation :

This method returns a view of the mapped elements. As long as the returned Iterable is not iterated over, the supplied function f will not be invoked.

这就是它在您打印时起作用的原因 - 打印函数需要遍历项目,因此调用了 setState。

map 方法通常用于以某种方式转换列表中的每个项目。如果您想为列表中的每一项执行某些操作,请考虑使用 forEach方法代替:

x.forEach((v) {
setState(() {
_userList.add(v.data['name']);
});
});

关于flutter - 除非我打印它,否则不在 .map() 中执行 setState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57086544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com