为啥我会收到此错误错误状态:使用 Firestore 时 DocumentSnapshotPlatform 中不存在字段?
Posted
技术标签:
【中文标题】为啥我会收到此错误错误状态:使用 Firestore 时 DocumentSnapshotPlatform 中不存在字段?【英文标题】:Why am I getting this error Bad state: field does not exist within the DocumentSnapshotPlatform while using firestore?为什么我会收到此错误错误状态:使用 Firestore 时 DocumentSnapshotPlatform 中不存在字段? 【发布时间】:2021-11-15 16:03:44 【问题描述】:错误状态:DocumentSnapshotPlatform 中不存在字段
相关的导致错误的小部件是 StreamBuilder
> 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();
,
)
为什么会出现这个错误?
This is the image of my documents
enter image description here>
【问题讨论】:
【参考方案1】: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();
,
)
【讨论】:
我的firestore中有这些字段,我也有交叉检查 你检查doc.data()
的结果了吗?
当我单独访问时,我正在获取值,但它仍然显示此错误
当我使用 doc.data() 它显示空检查错误
您能否将doc
在.map
中的全部内容添加到您的问题中?以上是关于为啥我会收到此错误错误状态:使用 Firestore 时 DocumentSnapshotPlatform 中不存在字段?的主要内容,如果未能解决你的问题,请参考以下文章
NPM 启动错误上的 ENOENT。为啥我会收到此错误,为啥要查找“我的图片”目录?