首页 > 解决方案 > 如何在没有“并发修改”异常的情况下将所有列表项添加到另一个列表的每个项目

问题描述

我正在尝试将项目列表添加到另一个项目列表中。两个列表属于不同类型。这些项目是 2 个不同类(字符串、组)的实例。其中 Group 包含字符串(成员)列表和将成员添加到组的方法。这是代码...

void main(){
  void addMembersToGroups(List<String> members, List<Group> groups){
        groups.forEach((group){
            group.addMembers(members);
        });
    }
  var _members=['a','b'];
  var _groupsA=[Group()..addMembers(_members),Group()];
  var _groupsB=[Group(members:_members),Group()];

  //this function works fine
  addMembersToGroups(_members,_groupsA);

  //this function does not
  //Throws Unhandled exception:
  //Concurrent modification during iteration: Instance(length:2) of '_GrowableList'
  addMembersToGroups(_members,_groupsB);
}

和 Group 类

class Group{
  List<String> members;

  Group({this.members}){members??=[];}

  void addMembers(List<String> mems) {
    members.addAll(mems);
  }
}

问题可能出在 _groupB 变量中,其中 Group 使用成员字段进行了初始化。引发未处理的异常:迭代期间的并发修改:“_GrowableList”的实例(长度:2)

稍微解释一下会很有帮助。谢谢你。

标签: listdartgrowable

解决方案


推荐阅读