首页 > 解决方案 > Flutter:状态不佳:DocumentSnapshotPlatform 中不存在字段

问题描述

我正在上 Flutter 课程,我们目前正在研究 Firestore/Firebase。

在一个简单社区板的教程中,在线讲师使用了比我使用的版本稍早的 Dart/Flutter 版本(我使用的是最新的 V1.22.6)。输出将在 ListView 中的卡片上放置标题、描述和时间戳

在 Firestore 数据库中,其中一个文档具有时间戳字段,而另外两个则没有。这个练习是为了展示如何返回一个空值或者如果它不存在则什么都不返回。他通过一段代码解决了这个问题,这样它就不会在卡上返回任何内容:

 Text((snapshot.documents[index].data["timestamp"] == null) ? "" :
snapshot.documents[index].data["timestamp"].toString())

随着 SDK 的更新,我已经修复了语法,但它不会打印 null 或任何内容,它只是与错误“坏状态:DocumentSnapshotPlatform 中不存在字段”保持一致。我想知道是否有解决方法,如果 Firestore DB 中有一堆文档,并且无论出于何种原因,文档中不存在某个字段,那么在卡上不打印任何内容的最佳方法是什么?

我的代码具有更新的语法:

Text((snapshot.docs[index]['timestamp'] == null) ? 'N/A' : 
                snapshot.docs[index]['timestamp'].toString())

错误堆栈:

The following StateError was thrown building CustomCard(dirty):
Bad state: field does not exist within the DocumentSnapshotPlatform

#0      DocumentSnapshotPlatform.get._findKeyValueInMap
package:cloud_firestore_platform_interface/…/platform_interface/platform_interface_document_snapshot.dart:82
#1      DocumentSnapshotPlatform.get._findComponent
package:cloud_firestore_platform_interface/…/platform_interface/platform_interface_document_snapshot.dart:100
#2      DocumentSnapshotPlatform.get
package:cloud_firestore_platform_interface/…/platform_interface/platform_interface_document_snapshot.dart:115
#3      DocumentSnapshot.get
package:cloud_firestore/src/document_snapshot.dart:45
#4      DocumentSnapshot.[]
package:cloud_firestore/src/document_snapshot.dart:52
...

══════════════════════════════════════════════════ ══════════════════════════════

标签: flutterdart

解决方案


推荐阅读