Pourquoi cet instantané obtient-il chaque document deux fois ? Battement

Aug 15 2020

J'ai quelque chose de simple :

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

J'ai au total 2 documents et j'écoute la collection où ces documents sont stockés. Je veux seulement le documentId de celui qui a été modifié mais j'obtiens ceci:

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

Pourquoi quatre fois ? Si c'était 2 fois, c'est parce que j'ai une boucle foreach.

Réponses

SrilalSachintha Aug 15 2020 at 18:49

Très probablement, ce qui se passe est votre boucle appelée chaque fois que l'état est en cours de construction. vous obtenez 4 parce que votre état est reconstruit 2 fois pour une raison quelconque.

Je ne peux pas dire grand chose sans voir tout le code. mais au-dessus de la raison est le cas le plus courant.