Ruhan Saini
Ruhan Saini

Reputation: 17

Flutter firebase streams

I am trying to use

StreamBuilder<QuerySnapshot>(
            stream: _firestore.collection('messages').snapshots(),
            builder: (context,snapshot){
              if(snapshot.hasData) {
                final messages = snapshot.data.docs;
                List<Text> messageWidgets=[];
                for(var message in messages){
                 final messageText=message.data['text'];
                 final messageSender=message.data['sender'];
                 final messageWidget=
                     Text('$messageText from $messageSender');
                 messageWidgets.add(messageWidget);
                }
              }
            },
            ),

I am getting error in
final messageText=message.data['text'];
final messageSender=message.data['sender'];

I know it may be because of the new update but I want to access it and in documentation could not find anything like this.

In database in document I have two fields sender and text that is what I want to get individually out of data in messageText and messageSender. also please suggest some source where I could read so that next time I would not need to ask such question.

Upvotes: 0

Views: 158

Answers (1)

Victor Eronmosele
Victor Eronmosele

Reputation: 7716

Change these lines:

final messageText=message.data['text'];
final messageSender=message.data['sender'];

to:

final messageText=(message.data() as Map<String, dynamic>)['text'];
final messageSender=(message.data() as Map<String, dynamic>)['sender'];

The data contained in a QueryDocumentSnapshot can be retrieved by calling the .data() method.

Upvotes: 1

Related Questions