下面的Flutter Streambuilder代码运行无误并返回(屏幕截图在底部):
ID: AzFdOO9WsFaFbTxTQsuo
Data: Instance of '_JsonDocumentSnapshot'
如何获取_JsonDocumentSnapshot中的值并将其显示在Text()小部件中?
例如,有一个名为“name”的字符串字段,但我不知道如何访问它。
StreamBuilder(
stream: FirebaseFirestore.instance
.collection("groceries")
.doc(widget.docId)
.snapshots(),
builder: (context, streamSnapshot) {
if (streamSnapshot.connectionState == ConnectionState.waiting) {
return const Text("Loading");
} else if (streamSnapshot.hasData) {
return Text("ID: ${widget.docId}\n"
"Data: ${streamSnapshot.data}");
} else {
return const Text("No Data");
}
}
)
谢谢你的帮助!
2条答案
按热度按时间2eafrhcq1#
以下
Stream
返回类型为DocumentSnapshot
的对象:并且该类型包含文档快照,还包含关于该文档的更多附加信息。
因此,为了获取表示Firestore文档数据的JSON
Map<String, dynamic>
,您需要对snapshot.data()
的结果调用data()
,因此您需要尝试以下操作:现在它应该显示
Map<String, dynamic>
对象,其中包含Text
小部件中的文档数据。希望这对你有帮助。
cgyqldqp2#
在您的程式码范例中,
streamSnapshot.data
是Object
或dynamic
型别变数。要访问数据的JSON值,必须指定与值对应的键。
streamSnapshot.data['banana']