flutter \: необработанное исключение: одновременное изменение во время итерации: _LinkedHashMap len: 0 - PullRequest
0 голосов
/ 09 июля 2020

Я получаю эту ошибку, когда пытаюсь удалить что-то из моей карты PurchaseItems типа 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);
    }
  }
}

1 Ответ

0 голосов
/ 09 июля 2020

Эта ошибка означает, что вы добавляете или удаляете объекты из коллекции во время итерации. Это недопустимо, поскольку добавление или удаление элементов приведет к изменению размера коллекции и нарушению последующей итерации.

Таким образом, вы не можете удалить элемент в al oop, вместо этого вы можете создать список объектов, которые должны быть удалены и после l oop удалите их. Примерно так:

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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...