因此,当我尝试不使用打印件时,代码不会执行,但是当包含打印件时,代码将“正常”运行,是否有另一种无需使用打印件的方式对此进行编码?
不起作用
x.map((v) {
setState(() {
_userList.add(v.data['name']);
});
});
工作
print(x.map((v) {
setState(() {
_userList.add(v.data['name']);
});
}));
答案 0 :(得分:2)
假设x
是List
,则这是预期的行为。 map
返回惰性可迭代。这意味着在迭代映射列表之前,实际上什么也不会执行。来自documentation:
此方法返回映射元素的视图。只要未迭代返回的Iterable,将不会调用提供的函数f。
这就是为什么它在打印时起作用的原因-打印功能需要遍历所有项目,因此调用setState。
map
方法通常用于以某种方式转换列表中的每个项目。如果要对列表中的每个项目执行某项操作,请考虑使用forEach
方法:
x.forEach((v) {
setState(() {
_userList.add(v.data['name']);
});
});