Почему этот снимок получает каждый документ дважды? Флаттер

Aug 15 2020

У меня есть кое-что простое:

.snapshots()
  .listen((snapshot) {
      snapshot.documentChanges.forEach((doc) {       // Loop every document
        if (doc.type == DocumentChangeType.modified) { // If doc is modified
          print(doc.document.documentID);
        }
      });
  });

У меня всего 2 документа, и я слушаю коллекцию, в которой хранятся эти документы. Мне нужен только documentId измененного, но я получаю следующее:

I/flutter ( 2785): bdfDfgsDg4TsdfadvGew
I/flutter ( 2785): bdfDfgsDg4TsdfadvGew
I/flutter ( 2785): bdfDfgsDg4TsdfadvGew
I/flutter ( 2785): bdfDfgsDg4TsdfadvGew

Почему четыре раза? Если это было 2 раза, получи это, потому что у меня есть цикл foreach.

Ответы

SrilalSachintha Aug 15 2020 at 18:49

Скорее всего, ваш цикл вызывается каждый раз, когда создается состояние. вы получаете 4, потому что ваше состояние по какой-то причине перестраивается 2 раза.

не могу много сказать, не видя всего кода. но причина, указанная выше, является наиболее частым случаем.