Tại sao ảnh chụp nhanh này nhận được mọi tài liệu hai lần? Chớp cánh

Aug 15 2020

Tôi có một cái gì đó đơn giản:

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

Tôi có tổng cộng 2 tài liệu và tôi nghe bộ sưu tập nơi những tài liệu đó được lưu trữ. Tôi chỉ muốn documentId của cái đã thay đổi nhưng tôi nhận được cái này:

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

Tại sao bốn lần? Nếu nó là 2 lần là nhận được nó vì tôi có một vòng lặp foreach.

Trả lời

SrilalSachintha Aug 15 2020 at 18:49

Hầu hết những gì xảy ra là vòng lặp của bạn được gọi mỗi khi Trạng thái đang được xây dựng. bạn đang nhận được 4 vì trạng thái của bạn được xây dựng lại 2 lần do một số lý do.

không thể nói nhiều nếu không nhìn thấy toàn bộ mã. nhưng lý do trên là trường hợp phổ biến nhất.