Я пытаюсь прочитать прослушивание потока из Firebase с этим кодом:
visibleListsIds.forEach((final String listId) async {
final Stream<List<WishList>> wishListStream = sharedCollection()
.document(listId)
.snapshots()
.map((DocumentSnapshot documentSnapshot) {
log.d("updated Document Snapshot: ${documentSnapshot.data}");
return [
_getSerializers()
.deserializeWith(WishList.serializer, documentSnapshot.data)
];
});
wishListStreams.add(wishListStream);
});
Где sharedCollection () дает мне доступ к экземпляру Firestore с правильной коллекцией
Я пытаюсь написать в коллекцию с этим кодом
DocumentReference postRef = sharedCollection().document(wishList.listId);
firestore.runTransaction((Transaction tx) async {
DocumentSnapshot postSnapshot = await tx.get(postRef);
if (postSnapshot.exists) {
await tx.update(postRef,
_getSerializers().serializeWith(WishList.serializer, wishList));
} else {
await tx.set(postRef,
_getSerializers().serializeWith(WishList.serializer, wishList));
}
});
Что происходит:
- Я могу писать в Firebase, но только одно изменение за раз. Когда я делаю следующее обновление, последнее восстанавливается.
- Я вижу обновленные данные только в консоли Firebase. Приложение не показывает его и не отображается в журнале на
log.d("updated Document Snapshot: ${documentSnapshot.data}");
. - Когда я изменяю данные в консоли Firebase, я также не вижу их изменения
- НО после перезагрузки приложения все данные синхронизируются до текущего состояния консоли Firebase
Кто-нибудь знает, почему я не получаю обновления с Stream? Спасибо за вашу помощь.
Я использую плагин Cloud Firestore:
cloud_firestore: ^0.13.0+1