Следующий код читает коллекцию уведомлений в 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 для создания контейнеров для каждой игры на основе списка игр. Как я могу избежать этого раздражающего дублирования?