Flutter错误ConcurrentModificationError(迭代期间并发修改:'_GrowableList'的Instance(length:0)。)

问题描述 投票:0回答:1

我有这段代码抛出 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();
  }`

我尝试添加地图和列表的其他副本,也创建了值的副本,但没有任何效果。

flutter dart
1个回答
0
投票

tasks
具有List值,在dart上,实例的对象是通过引用传递的。 您可以重新创建
tasksCopy

的列表

您可以将

Map tasksCopy = tasks;
替换为

    Map<String, List<Event>> tasksCopy = Map.fromEntries(tasks.entries.map(
      (e) => MapEntry(e.key, e.value.toList()),
    ));
© www.soinside.com 2019 - 2024. All rights reserved.