Perché questa istantanea riceve ogni documento due volte? Svolazzare

Aug 15 2020

Ho qualcosa di semplice:

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

Ho in totale 2 documenti e ascolto la raccolta in cui sono archiviati quei documenti. Voglio solo il documentId di quello modificato ma ottengo questo:

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

Perché quattro volte? Se era 2 volte, prendilo perché ho un ciclo foreach.

Risposte

SrilalSachintha Aug 15 2020 at 18:49

Molto probabilmente quello che succede è che il tuo ciclo viene chiamato ogni volta che viene costruito lo Stato. stai ottenendo 4 perché il tuo stato viene ricostruito 2 volte per qualche motivo.

non posso dire molto senza vedere l'intero codice. ma al di sopra della ragione è il caso più comune.