Почему этот снимок получает каждый документ дважды? Флаттер
У меня есть кое-что простое:
.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
Скорее всего, ваш цикл вызывается каждый раз, когда создается состояние. вы получаете 4, потому что ваше состояние по какой-то причине перестраивается 2 раза.
не могу много сказать, не видя всего кода. но причина, указанная выше, является наиболее частым случаем.