Por que esse instantâneo obtém todos os documentos duas vezes? vibrar

Aug 15 2020

Eu tenho algo simples:

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

Tenho no total 2 documentos e ouço a coleção onde esses documentos estão armazenados. Eu quero apenas o documentId do alterado, mas eu recebo isso:

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

Por que quatro vezes? Se foi 2 vezes é pegar porque eu tenho um loop foreach.

Respostas

SrilalSachintha Aug 15 2020 at 18:49

Muito provavelmente o que acontece é o seu loop chamado toda vez que o State está sendo construído. você está obtendo 4 porque seu estado é reconstruído 2 vezes devido a algum motivo.

não posso dizer muito sem ver o código inteiro. mas acima da razão é o caso mais comum.