เหตุใดสแนปชอตนี้จึงได้รับทุกเอกสารสองครั้ง กระพือ

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

ทำไมต้องสี่ครั้ง? ถ้าเป็น 2 ครั้งจะได้รับเพราะฉันมี foreach loop

คำตอบ

SrilalSachintha Aug 15 2020 at 18:49

สิ่งที่เกิดขึ้นส่วนใหญ่อาจเป็นห่วงของคุณที่เรียกทุกครั้งที่มีการสร้างรัฐ คุณได้รับ 4 เนื่องจากสถานะของคุณถูกสร้างใหม่ 2 ครั้งเนื่องจากเหตุผลบางประการ

ไม่สามารถพูดอะไรได้มากโดยไม่ต้องดูรหัสทั้งหมด แต่เหตุผลข้างต้นเป็นกรณีที่พบบ่อยที่สุด