使用Dart从Firebase文档获取字段数据报错,求解决方案
解决Firestore获取字段报错问题
你的数据库结构如下:
你遇到的报错Bad state: cannot get a field on a DocumentSnapshotPlatform which does not exist,可按以下思路排查解决:
问题排查方向
- 文档是否存在:确认
widget.scourse对应的文档确实在users集合中,可通过打印dsa.exists验证,返回false则说明文档未找到。 - 字段名是否匹配:检查数据库内的字段名是否与代码中的
courseName完全一致,注意大小写、空格等细节,必须完全匹配才能正常获取。 - 字段是否存在:即便文档存在,也可能未定义
courseName字段,需确认目标文档内确实包含该字段。
修正后的代码示例
print(widget.scourse); DocumentSnapshot dsa = await FirebaseFirestore.instance .collection("users") .doc("$widget.scourse") .get(); // 先校验文档是否存在 if (dsa.exists) { // 安全获取字段的两种方式 // 方式1:通过data()获取,为空时返回默认值 String? courseName = dsa.data()?['courseName'] ?? '无课程名称'; // 方式2:先检查字段是否存在再获取 if (dsa.data()?.containsKey('courseName') == true) { courseName = dsa.get('courseName'); } print(courseName); } else { print("指定的文档不存在"); }
内容的提问来源于stack exchange,提问作者wasabi09
相关产品推荐
相关产品推荐

