Flutter и Firebase: как мне получить определенное поле из определенного документа в поток?

#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 перейдите по ссылке ниже, и вы получите более точный ответ.

https://firebase.flutter.dev/docs/firestore/usage/

Комментарии:

1. в cloud_firestore есть критические изменения в версии 0.14.0, которые осуждают многие методы, но идея должна быть аналогичной