Невозможно получить доступ к данным из FireBase с помощью StreamBuilder в флаттере - PullRequest
0 голосов
/ 10 февраля 2020

Здесь я пытаюсь получить данные из базы данных firebase, используя экземпляр firstore в streamBuilder .

  • .collection ('/ message_data / friendA ## friendB / message_list' ): -это мой путь к коллекции документов из firebase

Нет ошибок, просто пустая страница.

     @override
     Widget build(BuildContext context) {
       return Scaffold(
       appBar: AppBar(
       title: Text(widget.friendName),
     ),
     body: Column(
     children: <Widget>[
      Flexible(
          child: StreamBuilder(
        stream: Firestore.instance
            .collection('/message_data/friendA##friendB/message_list')
            .snapshots(),
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          if (snapshot.hasError) {
            return Text('Error on chatView ${snapshot.error.toString()}');
          }
          if (snapshot.connectionState == ConnectionState.active) {
            if (snapshot.hasData) {
              if (snapshot.data.documents .length > 0) {
                return ListView.builder(

                  itemCount: snapshot.data.documents.length,
                  itemBuilder: (BuildContext context, int index) {
                    DocumentSnapshot _document = snapshot.data.documents[index];



                    return ChatMessage(
                      isFriend: _document['fromA'],

                      isNotPrevious:snapshot.data.documents.length - 1 == index,
                      message: _document['content'],
                      friendInitial: 'T',

                      avatarUrl:'https://avatarfiles.alphacoders.com/132/132399.jpg',
                    );
                  },
                );

              }
              else{
                return Text('No messages found in chat view length vala'); 
              }
            }
            else{
                return Text('No messages found in chat view hasdata'); 
              }
          }
          else{
            return CircularProgressIndicator();
          }
        },
      )),

1 Ответ

0 голосов
/ 13 февраля 2020

Я думаю, что у вас есть какая-то ошибка в вашем снимке, но у вас также есть ошибка в том, как вы получаете доступ к данным вашего пожарного хранилища здесь. Вы должны получить доступ к свойству data вашего DocumentSnapshot, чтобы получить доступ к данным.

DocumentSnapshot _document = snapshot.data.documents[index];
Map chatData = _document.data;


return ChatMessage(
    isFriend: chatData['fromA'],

    isNotPrevious:snapshot.data.documents.length - 1 == index,
    message: chatData['content'],
    friendInitial: 'T',

    avatarUrl:'https://avatarfiles.alphacoders.com/132/132399.jpg',
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...