flutter 无法无条件调用方法“[]”,因为接收器可以为“null”,卢颖颖课程

rryofs0p  于 2023-10-22  发布在  Flutter
关注(0)|答案(1)|浏览(104)

无法无条件调用方法“[]”,因为接收器可以为“null”。尝试使调用有条件(使用'?.')或向目标('!').
我得到这个错误,而试图从Firebase云数据流我不知道该怎么办

StreamBuilder<QuerySnapshot>(
              stream: _firestore.collection('messages').snapshots(),
              builder: (context, snapshot) {
                List<Text> messageWidgets = [];
                if (snapshot.hasData) {
                  final messages = snapshot.data?.docs;

                  for (var message in messages!) {
                    final messageData = message.data();
                    final messageText = messageData['text'];
                    final messageSender = messageData['sender'];
                    final messageWidget =
                        Text('$messageSender said $messageText');
                    messageWidgets.add(messageWidget);
                  }
                }
                return Column(
                  children: messageWidgets,
                );
              },
            ),

这两行的误差

final messageText = messageData['text'];
 final messageSender = messageData['sender'];

尝试从firbase云获取和传输数据

koaltpgm

koaltpgm1#

您可以使用as前缀来Map对象。然后你可以使用密钥来获取数据。

final messageData = message.data() as Map?;
final messageText = messageData?['text']??"default msg";
final messageSender = messageData?['sender']??"default sender";

相关问题