flutter - 为什么我会收到此错误错误状态:使用 Firestore 时 DocumentSnapshotPlatform 中不存在字段?
问题描述
错误状态:DocumentSnapshotPlatform 中不存在字段
相关的导致错误的小部件是 StreamBuilder<QuerySnapshot<Object?>> StreamBuilder:file:///D:/EgoPro/Flutter%20Apps/task_app/lib/screens/task_screen.dart:189:13 这是错误
StreamBuilder<QuerySnapshot>(
// <2> Pass `Stream<QuerySnapshot>` to stream
stream:
FirebaseFirestore.instance.collection('tasks').snapshots(),
builder: (context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.hasData) {
// <3> Retrieve `List<DocumentSnapshot>` from snapshot
final List<DocumentSnapshot> documents = snapshot.data!.docs;
print(documents);
return ListView(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
children: documents
.map(
(doc) => Meetingcard(
id: doc.get("id"),
title: doc.get("title"),
description: doc.get("description"),
time: TimeOfDay.now()),
)
.toList());
} else if (snapshot.hasError) {
return Text("'It's Error!'");
} else {
return CircularProgressIndicator();
}
},
)
为什么我会收到此错误?
解决方案
doc.get
如果指定的字段在文档中不存在,将返回此错误。所以你的一个领域:id
, title
, description
(或更多)不能在doc
.
您可以添加断点或日志并检查doc.data()
内部的结果.map((doc)...
以查看其中包含的内容。
(处理可选字段的一种可能方法是定义一个模型类,创建处理缺失值的转换器并分配空字符串或其他默认值,因此当您从流中读取数据时,您可以使用此模型,并且您不需要'不必在那里处理缺失值。)
编辑:
根据评论中的错误图片,错误似乎在其他地方,您将值分配给documents
. snapshot.data!.docs
具有类型List<QueryDocumentSnapshot<Object?>>
而不是`List。试试下面的代码:
StreamBuilder<QuerySnapshot>(
// <2> Pass `Stream<QuerySnapshot>` to stream
stream:
FirebaseFirestore.instance.collection('tasks').snapshots(),
builder: (context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.hasData) {
// <3> Retrieve `List<DocumentSnapshot>` from snapshot
return ListView(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
children: snapshot.data!.docs
.map(
(DocumentSnapshot doc) => Meetingcard(
id: doc.data()!["id"],
title: doc.data()!["title"],
description: data()!["description"],
time: TimeOfDay.now()),
)
.toList());
} else if (snapshot.hasError) {
return Text("'It's Error!'");
} else {
return CircularProgressIndicator();
}
},
)
推荐阅读
- reactjs - 未处理的拒绝(错误):无效的挂钩调用。Hooks 只能在函数组件的主体内部调用
- c# - 如何使用任务将 HTTP 请求包装成成功或失败
? - javascript - 将字符串转换为javascript数组调用AJAX php curl调用
- dax - Power BI Dax 问题:不同值的平均值
- python - 如何解决 AttributeError: module pygame.surface has no attribute rect
- python - 如何使用 python 后端部署 php 脚本
- python - 如何为 Tkinter 应用程序应用 pytest?
- python - 使用for循环遍历地图不起作用
- ios - MacOS 应用程序无法将 SwiftUI 视图实例化为根视图控制器
- sql - 无法使用 AAD 全局管理员(成员类型)帐户登录 Azure 门户中的 Azure SQL 数据库