У меня определенная проблема с пожарным депо и трепетом. До сих пор он прекрасно работает с потоками и обновлением данных.
Контекст:
Я создаю приложение, в котором пользователи должны иметь возможность сохранять имя, электронную почту и аватар. Мой код для сохранения это выглядит так
onSave(BuildContext context) async {
if (formKey.currentState.validate()) {
formKey.currentState.save();
showLoading(context);
FirebaseStorage storage = FirebaseStorage.instance;
StorageUploadTask uploadTask =
storage.ref().child('$udid/avatar').putFile(avatar);
String downloadUri = await (await
uploadTask.onComplete).ref.getDownloadURL();
contact['avatarUrl'] = downloadUri.toString();
await Firestore.instance
.document('users/$udid')
.updateData({'profile': contact});
Navigator.pop(context);
}
}
Работает отлично, но затем я открываю другой виджет (код ниже), и запись в базе данных удаляется.
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: Firestore.instance
.collection("jobs")
.orderBy('created', descending: true)
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return Container();
List<DocumentSnapshot> docs = snapshot.data.documents;
return Container(
child: ListView.builder(
itemBuilder: (context, index) {
return ListTile(title: Job.fromSnapshot(docs[index]));
},
itemCount: docs.length,
));
},
);
}
Я действительно понятия не имею, почему это происходит. Запись в базе данных остается до тех пор, пока я не открою другой экран. Пользователь также не может переключать экран во время работы onSave. Я уже пытался с транзакцией, но там у меня все та же проблема.
Нигде во всем моем коде я не вызываю функцию удаления.
Кто-нибудь знает, как это исправить? Или я должен открыть новый отчет об ошибке на GitHub для flutter / firestore?