Warum bekommt dieser Schnappschuss jedes Dokument zweimal? Flattern

Aug 15 2020

Ich habe etwas einfaches:

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

Ich habe insgesamt 2 Dokumente und höre mir die Sammlung an, in der diese Dokumente gespeichert sind. Ich möchte nur die documentId der geänderten, aber ich bekomme dies:

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

Warum viermal? Wenn es 2 mal war, bekomme ich es, weil ich eine Foreach-Schleife habe.

Antworten

SrilalSachintha Aug 15 2020 at 18:49

Höchstwahrscheinlich wird Ihre Schleife jedes Mal aufgerufen, wenn der Zustand erstellt wird. Sie erhalten 4, weil Ihr Zustand aus irgendeinem Grund zweimal neu aufgebaut wird.

kann nicht viel sagen, ohne den ganzen Code zu sehen. aber obiger Grund ist der häufigste Fall.