Mengapa snapshot ini mendapatkan setiap dokumen dua kali? Berdebar

Aug 15 2020

Saya punya sesuatu yang sederhana:

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

Saya memiliki total 2 dokumen dan saya mendengarkan koleksi di mana dokumen-dokumen itu disimpan. Saya hanya ingin documentId dari yang diubah tetapi saya mendapatkan ini:

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

Mengapa empat kali? Jika sudah 2 kali mendapatkannya karena saya memiliki loop foreach.

Jawaban

SrilalSachintha Aug 15 2020 at 18:49

Kemungkinan besar yang terjadi adalah loop Anda dipanggil setiap kali State sedang dibangun. Anda mendapatkan 4 karena status Anda dibangun ulang 2 kali karena beberapa alasan.

tidak bisa berkata banyak tanpa melihat keseluruhan kode. tetapi alasan di atas adalah kasus yang paling umum.