我正在使用StreamBuilder将流转换为Widgets,但我在操作符中突出显示了我的字符串,并显示错误:

The operator '[]' isn't defined for the type 'Object? Function()

代码是这样的:

void messageStream() async {
  await for (var snapshot in _firestore.collection('messages').snapshots()) {
    for (var message in snapshot.docs) {
      print(message.data());
    }
  }
}


    body: SafeArea(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: <Widget>[
          StreamBuilder<QuerySnapshot>(
            stream: _firestore.collection('messages').snapshots(),
            builder: (context, snapshot) { //This is where the second error appeared
              if (snapshot.hasData) {
                final messages = snapshot.data?.docs;
                List<Text> messageWidgets = [];
                for (var message in messages!) {
                  final messageText = message.data['text']; //These are where the errors can be found
                  final messageSender = message.data['sender'];//These are where the errors can be found.

                  final messageWidget = Text('$messageText from $messageSender');
                  messageWidgets.add(messageWidget);
                }
                return Column(
                  children: messageWidgets,
                );
              }
              return build(context);
            },
          ),

推荐答案

.data等于function.所以,你必须用括号()来称呼它.此外,您可能必须使用关键字as强制转换正确的类型.

不是:

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

try :

final messageText = (message.data() as Map)['text'];
final messageSender = (message.data() as Map)['sender'];

或者:您可以使用.get():

final messageText = message.get('text');
final messageSender = message.get('sender');

Flutter相关问答推荐

无法在Flatter中设计正确的布局

如何防止alert 对话框在收到通知时出现在某个flutter页面中

如何让一个名为ONTAP的回调函数、另一个名为onTapDown的回调函数和另一个名为onTapUp的回调函数不重叠?

Flutter 蜂窝单元测试

Firebase存储不显示在Flutter 中链接的图像

Flutter 块消费者仅对特定的状态属性更改做出react

如何在抖动中将PNG图像转换为WebP

Flutter :执行com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction时出现故障

为Android生成时出现Flutter 错误:给定资源值的<;COLOR&>无效

在flutter中实现类似3D的可滚动堆叠分页列表

Select 文本时如何更改 Flutter 中的光标 colored颜色 ?

hooks_riverpod 有用途吗

网页浏览器不支持鼠标滚动的行项目

允许文本小部件在容器之间溢出

如何在Flutter中动态绘制一条从A点到B点的线?

如何(部分)更新 riverpod 中的 AsyncValue?

在 Android 12+ 中,REST API 调用在 flutter 中非常慢,在 WiFi 中需要 10 秒,而在移动数据中不到一秒

TextSpan 避免符号字符串组上的换行符

使用 Firebase/Flutter 进行应用判断 - 100% 无效请求

使用 hydrad_bloc 的预览包