firebase - 为什么在我的颤振聊天应用程序中从 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,
);
},
);
}
}
解决方案
显然你调用data()
返回一个对象,而你期望它返回一个地图。
转换类型的一种快速方法是:
final data = messages[index].data() as Map;
此错误是由 Firestore 插件 2.0 版的更改引起的,我建议阅读有关迁移到 cloud_firestore 2的文档。
推荐阅读
- java - 为什么 MySQL Connector/J 抛出 java.sql.SQLException: Generated keys not requested?
- outlook - 如何从 Outlook 加载项插入 Outlook 可操作消息
- powershell - 从云下载的 exe 文件未从 cmd 运行
- python - 等元素指数
- data-structures - 由于虚拟节点,红黑树是否被视为完整二叉树?
- javascript - 使用没有正则表达式的循环匹配字符串上的模式
- python - 在 Jinja 中记录宏是否有官方格式?
- android - 如何理解对 mvvm 的依赖?
- neo4j - Cypher 查询与多个匹配块的行为不符?
- c++ - 如何在 Crypto++ 中使用 RSA OAEP SHA-256 加密/解密数据