このスナップショットがすべてのドキュメントを2回取得するのはなぜですか?フラッター

Aug 15 2020

私は簡単なものを持っています:

.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

なぜ4回?foreachループがあるので、2回だった場合は取得します。

回答

SrilalSachintha Aug 15 2020 at 18:49

おそらく何が起こるかは、状態が構築されるたびに呼び出されるループです。何らかの理由で状態が2回再構築されたため、4を取得しています。

コード全体を見ずに多くを語ることはできません。しかし、上記の理由が最も一般的なケースです。