【问题标题】: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));
    

    【讨论】:

      猜你喜欢
      • 2019-11-27
      • 1970-01-01
      • 2019-10-05
      • 2011-01-16
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 2022-01-05
      • 2014-09-20
      相关资源
      最近更新 更多