Streambuilder only updates after hot reload?

Viewed 411

This streambuilder only seems to show the messages (and any new messages I send) from my database whenever I hot reload. I suspect it's a problem with the widget building itself before it receives information from the stream, but I'm not sure how to fix this.
Thank you.

class MessagesStream extends StatefulWidget {
 MessagesStream({this.chatroomId}); 
  final String chatroomId;

  @override
  _MessagesStreamState createState() =>
      _MessagesStreamState(chatroomId: chatroomId);
}

class _MessagesStreamState extends State<MessagesStream> {
  _MessagesStreamState({this.chatroomId});
  String chatroomId;

  @override
  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: _firestore
          .collection('chatrooms')
          .document(widget.chatroomId)
          .collection(widget.chatroomId)
          .orderBy('timestamp', descending: true)
          .limit(20)
          .snapshots(),
      builder: (BuildContext context, AsyncSnapshot snapshot) {
        if (!snapshot.hasData) {
          return Center(
            child: CircularProgressIndicator(
              backgroundColor: Colors.lightBlueAccent,
            ),
          );
        }
        return Expanded(
          child: ListView.builder(
            itemCount: snapshot.data.documents.length,
            reverse: true,
            padding: EdgeInsets.symmetric(horizontal: 10.0, vertical: 10.0),
            itemBuilder: (context, index) {
              DocumentSnapshot message = snapshot.data.documents[index];
              final messageText = message.data['text'];
              final messageSender = message.data['sender'];
              final currentUser = loggedInUser.email;
              //a separate widget for the layout of each message bubble
              return MessageBubble(
                text: messageText,
                isMe: currentUser == messageSender ? true : false,
              );
            },
          ),
        );
      },
    );
  }
}
0 Answers
Related