Как можно избежать временного дублирования данных внешнего интерфейса при получении данных из Firebase с помощью snapshots.listen ()? - PullRequest
0 голосов
/ 10 апреля 2020

Следующий код читает коллекцию уведомлений в Firebase и добавляет длину списка снимков запросов на уведомления в атрибут notifications объекта currEmp, но когда я нахожусь на экране и поле просмотра изменяется в базе данных Firebase, контейнер удерживание уведомлений будет дублироваться, пока я не перестрою страницу.

List<Games> games= List();
  Future empsBuild(List gms) async {
    gms.clear();
    FirebaseAuth.instance.currentUser().then((val) {
      Firestore.instance
          .collection("games")
          .where("uid", arrayContains: val.uid)
          .snapshots()
          .listen((val) {
        if (val.documents.isNotEmpty) {
          checkGame = true;
          gms.clear();

          for (var doc in val.documents) {
            Games currGame = Games.fromMap(doc);
            // Busca por notificações no banco de dados aqui //
            Firestore.instance
                .collection("notifications")
                .where("alvo", isEqualTo: currGm.title)
                .where("style", isEqualTo: "fps")
                .where("available", isEqualTo: false)
                .getDocuments()
                .then((notifications) {
              gms.clear();
              print(currGm.title);
              var not = notifications.documents;
              if (not.isNotEmpty) {
                currGm.notifications = 0;
                currGm.notifications = not.length;
                if (this.mounted) setState(() {});
                for (var notification in not) {
                  currGm.notList.add(MyNotification.fromMap(notification));
                }
              }
              print(currGm.notifications);
              gms.add(currGm);
              if (this.mounted) setState(() {});
            });
          }
        }
      });
    });
  }

Я использую простой ListView.builder для создания контейнеров для каждой игры на основе списка игр. Как я могу избежать этого раздражающего дублирования?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...