เหตุใดสแนปชอตนี้จึงได้รับทุกเอกสารสองครั้ง กระพือ
ฉันมีบางอย่างง่ายๆ:
.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
สิ่งที่เกิดขึ้นส่วนใหญ่อาจเป็นห่วงของคุณที่เรียกทุกครั้งที่มีการสร้างรัฐ คุณได้รับ 4 เนื่องจากสถานะของคุณถูกสร้างใหม่ 2 ครั้งเนื่องจากเหตุผลบางประการ
ไม่สามารถพูดอะไรได้มากโดยไม่ต้องดูรหัสทั้งหมด แต่เหตุผลข้างต้นเป็นกรณีที่พบบ่อยที่สุด