今天改bug的时候遇到一个奇葩事件,我想修改List中所有的Bean的一个属性,for循环里面用到了await,但是每次返回的新list只有前几个数据改变了,后面的没有改变。后来发现是forEach和for (int i = 0; i < test.length; i++)的使用方式引起的问题。
开始为了方便直接使用了增强for循环
test.forEach((element) async {
var name = await contactRepo.findName(element.number);
element.name = name;
});
导致输出结果不理想,
后改成
for (int i = 0; i < test.length; i++) {
CallRecord element = test[i];
name = await contactRepo.findName(element.number);
element.name = name;
}
-------------------------------------- 简单记录只为下次少走弯路 ----------------------------------------------------