#firebase #flutter #stream
#firebase #flutter #поток
Вопрос:
Я пытался получить определенное поле из определенного документа в поток. Но я всегда получал null. Как мне это исправить?
Функция
Stream<List<String>> getError() {
DocumentReference errorReference =
appSettingCollection.document('report_error');
final Stream<DocumentSnapshot> snapshots = errorReference.snapshots();
return snapshots.map((doc) {
//print(doc.data['types']);
return doc.data['types'];
});
}
Главная
return StreamBuilder<List<String>>(
stream: User_DatabaseService().getError(),
builder: (context, snapshot) {
final List<String> errorTypes = snapshot.data;
print('In Error Report : $errorTypes'); // I got null??? But why?
///--------
}}
Ответ №1:
Я думаю, вы выбрали неправильный поток. Попробуйте исправить поток
StreamBuilder<DocumentSnapshot>(
stream: Firestore.instance
.collection('CollectionName')
.document("DocumentID")
.get(),
И используйте его ниже для доступа к определенному полю как:
document["FieldName"]
Для доступа к одному полю вам потребуется получить доступ ко всему документу.Я предложу использовать FutureBuilder перейдите по ссылке ниже, и вы получите более точный ответ.
Комментарии:
1. в cloud_firestore есть критические изменения в версии 0.14.0, которые осуждают многие методы, но идея должна быть аналогичной