【问题标题】:flutter\: Unhandled Exception: Concurrent modification during iteration: _LinkedHashMap len:0颤振\:未处理的异常:迭代期间的并发修改:_LinkedHashMap len:0
【发布时间】:2020-10-30 11:19:00
【问题描述】:
当我尝试从我的购买项目地图中删除某些 pf 类型 的东西时出现此错误,有人知道为什么吗?
for (var key2 in purchasedItems.keys) {
for (var id in currentIds) {
if (key2 != id) {
print("key is $key2");
purchasedItems.removeWhere((key, value) => key == key2);
}
}
}
【问题讨论】:
标签:
dictionary
flutter
dart
【解决方案1】:
此错误表示您在迭代期间从集合中添加或删除对象。这是不允许的,因为添加或删除项目会改变集合大小并扰乱后续迭代。
因此,您不能在循环中删除项目,而是可以创建必须删除的对象列表,并在循环后删除它们。像这样的:
var toRemove = [];
for (var key2 in purchasedItems.keys) {
for (var id in currentIds) {
if (key2 != id) {
print("key is $key2");
toRemove.add(key)
}
}
}
purchasedItems.removeWhere( (e) => toRemove.contains(e));