尝试从列表中删除对象时在迭代过程中进行并发修改 [英] Concurrent modification during iteration while trying to remove object from a list

查看:385
本文介绍了尝试从列表中删除对象时在迭代过程中进行并发修改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图循环多个列表,最后比较它们的名称,如果它们不匹配,则将其从列表中删除...

Am trying to loop in multiple lists and finally comparing their names and delete it from a list if they don't match ...

但出现此错误:


迭代期间的并发修改:

Concurrent modification during iteration:

尽管我为了避免该错误而复制了原始列表,但仍然得到它..我尝试的是:

although i have took a copy of the original list just to avoid this error .. but still am getting it .. what i tried is:

globals.filteredPollsList = pollsList;
pollsList.forEach( (p) {
  for (var e in entitiesList) {
    print(e.name);
    for (var entity in entitiesFilter) {
      print(entity);
      print(e.name);
      if (e.name != entity && p.entityId != e.id) {
        print('true');
        globals.filteredPollsList.remove(p);
      }
    }
  }
});

但出现此错误:

flutter: ══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
flutter: The following ConcurrentModificationError was thrown while handling a gesture:
flutter: Concurrent modification during iteration: Instance(length:8) of '_GrowableList'.
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #0      List.forEach (dart:core/runtime/libgrowable_array.dart:279:36)
flutter: #1      _ShapedWidgetState.filterPoll (package:moi_polls_app/pages/home.page.dart:1484:15)
flutter: #2      _ShapedWidgetState.build.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:moi_polls_app/pages/home.page.dart:1896:45)
flutter: #3      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
flutter: #4      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
flutter: #5      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
flutter: #6      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
flutter: #7      TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:175:7)
flutter: #8      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:315:9)
flutter: #9      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:73:12)
flutter: #10     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11)
flutter: #11     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:180:19)
flutter: #12     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22)
flutter: #13     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7)
flutter: #14     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7)
flutter: #15     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7)
flutter: #16     _invoke1 (dart:ui/hooks.dart:168:13)
flutter: #17     _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5)
flutter:
flutter: Handler: onTap
flutter: Recognizer:
flutter:   TapGestureRecognizer#e99b3(debugOwner: GestureDetector, state: possible, won arena, finalPosition:
flutter:   Offset(283.3, 608.7), sent tap down)

如何解决此问题?

推荐答案

如果要复制列表,请使用以下命令:

If you want to copy your list use this:

globals.filteredPollsList = List.from(pollsList);

这篇关于尝试从列表中删除对象时在迭代过程中进行并发修改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆