Flutter 中 Firebase Firestore 无法返回文档数据问题排查
问题排查及修复方案
1. 代码语法修复
你当前代码里的message.data写法错误,cloud_firestore库中DocumentSnapshot实例的data是方法,需要调用才能获取文档的Map格式数据,修改后的代码如下:
void messegesStream() async { await for (var snapshot in _firestore.collection('messages').snapshots()) { for (var message in snapshot.docs) { print(message.data()); // 此处添加括号调用data方法 } } }
2. 其他常见导致无法获取数据的原因
- 确认Firebase初始化流程已正确完成,需要在
runApp之前调用Firebase.initializeApp()完成初始化,否则所有Firestore请求都会静默失败 - 检查Firestore的安全规则配置,默认初始规则是禁止所有读写请求的,测试阶段可以临时把规则改成允许所有读写验证功能:
注意:正式上线前必须修改为符合业务逻辑的安全规则,避免数据泄露rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if true; } } } - 确认你的Firestore中确实存在
messages集合,且集合下有可读取的文档,注意集合名称大小写完全匹配,不能有拼写错误 - 检查当前设备的网络连接是否正常,是否可以正常访问Firebase服务
- 确认你主动调用了
messegesStream()方法,该异步方法如果没有被触发执行,不会主动拉取数据
内容的提问来源于stack exchange,提问作者Mazen Bahy
相关产品推荐
相关产品推荐

