1

When I press the chat tab. It displays the error for few seconds before retrieving the data.

The getter 'documents' was called on null.

Receiver: null

Tried calling: documents

      Widget chatRoomsList() {
    return StreamBuilder(
      stream: chatRooms,
      builder: (context, snapshot) {
        print(snapshot.data.documents.length);

        return snapshot.hasData ? ListView.builder(
                itemCount: snapshot.data.documents.length,
                shrinkWrap: true,
                itemBuilder: (context, index) {
                  return ChatRoomsTile(
                    userName:snapshot.data.documents[index].data['chatRoomId'].toString().replaceAll("_", "").replaceAll(Constants.myName, ""),
                    chatRoomId: snapshot.data.documents[index].data["chatRoomId"].toString(),
                  );
                })
            : Container();
      },
    );
  }

I tried this. Still same error.

    Widget chatRoomsList() {
    return StreamBuilder(
      stream: chatRooms,
      builder: (context, snapshot) {
        print(snapshot.data.documents.length);
if(snapshot.hasData){
  return ListView.builder(
      itemCount: snapshot.data.documents.length,
      shrinkWrap: true,
      itemBuilder: (context, index) {
        return ChatRoomsTile(
          userName:snapshot.data.documents[index].data['chatRoomId'].toString().replaceAll("_", "").replaceAll(Constants.myName, ""),
          chatRoomId: snapshot.data.documents[index].data["chatRoomId"].toString(),
        );
      });
}
else
  {
        return Container();
  }

      },
  • To mark an answer as accepted, click on the check mark beside the answer to toggle it from greyed out to filled in :) – Akif Oct 22 '20 at 17:57

1 Answers1

1

You are trying to print the documents of the snapshot.data when it was null. You can print it if the snapshot has data. Change the code like this:

     if(snapshot.hasData){
        print(snapshot.data.documents.length);
    
Akif
  • 7,098
  • 7
  • 27
  • 53