我有这段代码抛出 ConcurrentModificationError (迭代过程中的并发修改: '_GrowableList' 的 Instance(length:0).) 错误,但我正在修改地图的副本而不是地图本身。 我有一个数据库丢失了这样的东西:
Map tasks = {
"10-10-2011": [Event(title:"Hello", done: true), Event(), Event()],
"10-05-2011": [Event(title:"Hello123", done: false), Event(), Event()],
}
这是我的代码,错误在值处停止
void addUnfinishedTasks() {
Map tasksCopy = tasks;
String today = DateTime.now().toString().substring(0, 10);
tasksCopy.forEach((key, value) {
if (key != today) {
for (Event task in value) {
if (!task.done) {
tasks[key].remove(task);
if (tasks.containsKey(today)) {
tasks[today].add(task);
} else {
tasks[today] = [task];
}
}
}
}
});
updateDataBase();
}`
我尝试添加地图和列表的其他副本,也创建了值的副本,但没有任何效果。
tasks
具有List值,在dart上,实例的对象是通过引用传递的。 您可以重新创建 tasksCopy
的列表
您可以将
Map tasksCopy = tasks;
替换为
Map<String, List<Event>> tasksCopy = Map.fromEntries(tasks.entries.map(
(e) => MapEntry(e.key, e.value.toList()),
));