ошибка во флаттере требует идентификатора при использовании потокового построителя - PullRequest
0 голосов
/ 13 марта 2020

Я создал виджет в приложении флаттера и он связан с Google Firebase, но я получил ошибку в StreamBuilder при получении документа данных. ('Быстрая')

Widget _createBody() {
    return StreamBuilder(
      stream: Firestore.instance
          .collection('notes').document.('quick').snapshots(),
      builder: (context, snapshot){
        if(snapshot.hasData){
          var doc = snapshot.data;
          if (doc.exists){
            return Text(doc['content']);
          }
        }
        return CircularProgressIndicator();

       }
    );
  }

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Это должно быть примерно так, если вы выбираете один документ.

Widget _createBody() {
    return StreamBuilder(
      stream: Firestore.instance
          .collection('notes')
          .document('quick')
          .get()
          .snapshots(),
      builder: (context, snapshot){
        if(snapshot.hasData){
          var doc = snapshot.data;
          if (doc.exists){
            return Text(doc['content']);
          }
        }
        return CircularProgressIndicator();

       }
    );
  }

Если это не сработает, вы всегда можете изменить его следующим образом:

Firestore.instance
        .collection('notes')
        .document('quick')
        .get()
        .then((DocumentSnapshot ds) {
      // use ds as a snapshot
    });
0 голосов
/ 13 марта 2020
 return StreamBuilder<QuerySnapshot>(
          stream: Firestore.instance.collection('notes').snapshots(),
          builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
            if (snapshot.hasError)
              return Center(
                child: Text('Error: ${snapshot.error}'),
              );
            switch (snapshot.connectionState) {
              case ConnectionState.waiting:
                return Center(
                  child: Text('Loading...'),
                );
              default:
                return new ListView(
              children: snapshot.data.documents.map((
                  DocumentSnapshot document) {
                return  ListTile(
                  title: Text(document['content']),
                 );
               }).toList(),
            }
           }
         };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...