首页 > 解决方案 > 为什么在我的颤振聊天应用程序中从 firebase 访问字段时第 15 行出现错误

问题描述

我的问题在第 15 行,同时访问数据 ['author_id'] 但 android studio 说

错误:未为“对象”类型定义运算符“[]”。(undefined_operator at [shaheb_chats] lib\src\widgets\message_wall.dart:23)

 class MessageWall extends StatelessWidget {

  final List<QueryDocumentSnapshot> messages;
  


  const MessageWall({Key key,this.messages}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: messages.length,
      itemBuilder: (context, index){
        final data =  messages[index].data();
        final user = FirebaseAuth.instance.currentUser;
        if(user != null && user.uid == data["author_id"]){
          return ChatMessage(
            index: index,
            data: data,
          );
        }
        return ChatMessageOther(
          index: index,
          data: data,
        );
      },
    );
  }
}

标签: firebaseflutter

解决方案


显然你调用data()返回一个对象,而你期望它返回一个地图。

转换类型的一种快速方法是:

final data =  messages[index].data() as Map;

此错误是由 Firestore 插件 2.0 版的更改引起的,我建议阅读有关迁移到 cloud_firestore 2的文档。


推荐阅读