Dlaczego ta migawka powoduje wyświetlenie każdego dokumentu dwukrotnie? Trzepotanie

Aug 15 2020

Mam coś prostego:

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

Mam w sumie 2 dokumenty i odsłuchuję kolekcję, w której te dokumenty są przechowywane. Chcę tylko DocumentId zmienionego, ale otrzymuję to:

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

Dlaczego cztery razy? Jeśli to było 2 razy, to rozumiem, ponieważ mam pętlę foreach.

Odpowiedzi

SrilalSachintha Aug 15 2020 at 18:49

Najprawdopodobniej to, co się dzieje, to twoja pętla wywoływana za każdym razem, gdy tworzony jest stan. otrzymujesz 4, ponieważ twój stan jest odbudowywany 2 razy z jakiegoś powodu.

nie mogę wiele powiedzieć bez zapoznania się z całym kodem. ale powyższy powód jest najczęstszym przypadkiem.