firebase - Flutter & Cloud-Firestore:如何阅读链接到 Flutter FutureBuilder 的 Firestore 文档
问题描述
场景解释:使用:import 'package:cloud_firestore/cloud_firestore.dart';
Cloud Firestore:一个集合'sessionsLog',包含具有以下字段的文档:'sessionId'一个字符串'isClosed'一个布尔'locationId'一个字符串和一些其他字段......
我想检索所有带有 false bool 的“isClosed”文档,只检索一次,然后执行一些操作。因此我选择使用 FutureBuilder(而不是 streambuilder),我做了什么:
FutureBuilder(
future: Firestore.instance.collection('sessionsLog')
.where('isClosed', isEqualTo: false).getDocuments();
builder: (ctx, sessionSnapshot) {
return RaisedButton(
child: Text('Search'),
onPressed: () async {
//some other code here, that needs async I added on top
if (sessionSnapshot.connectionState !=
ConnectionState.done) {
return CircularProgressIndicator();
}
if (!sessionSnapshot.hasData) {i should
print('nothing to show here');
}else {
//the below line of code is wrong, it could be print / or Text / or any other widget
//I've just added it for the sake of an example.
print(sessionSnapshot.data.documents[0]['parkingLocationName']);}});}),
上面的代码不起作用,我只是为一个简单的代码结果创建了它,以便能够打印我正在检索的值,所以请不要在我的代码中修复某些内容。
还要注意的是,在我的代码逻辑中,总会有一个带有'isClosed' = false
. 所以,我应该总是收到一份文件。
但如果不同,请给我 2 个示例,一个如果检索到的数据包含 1 个单个文档,另一个如果可能有多个文档,因此我将如何迭代数据。
我只想要正确的方法来读取/访问我收到的数据,无论是打印字段信息,还是以文本形式显示它们。任何事情,但是在上面确切解释的场景中,我将如何做到这一点。
非常感谢基于我的代码场景的简单示例示例。
解决方案
你可以在未来这样做:
Future<void> performActionsOnClosed() async {
await FirebaseFirestore.instance
.collection('sessionsLog')
.where('isClosed', isEqualTo: false)
.get()
.then(
(snapshot) {
if (snapshot.docs.isNotEmpty) {
// Perform actions
} else {
print('No Documents Found');
}
},
);
}
推荐阅读
- python - Scrapy 不断给我错误的 AttributeError: 'str' object has no attribute 'text'
- python - if/elif/else 如何用 min() 和 max() 代替?
- python - (分层)KFold 与 train_test_split - 使用什么训练数据?
- sql - SQL需要10分钟内发生的事件列表的最小时间实例和总持续时间
- c# - C# Where 子句不会从可为空的布尔值中返回空值
- c# - 作为 Debug Web API 发布的 Release 程序集的性质是什么
- swift - 如何快速设置 UIButton 的高度锚点?
- sql-server - 设置为零时的 Int 变量表现奇数
- search - Solr - 如何以复合“word-1,word-1 + word-2,word-1 + word-2 ... word-n”的方式标记字符串中的单词?
- reactjs - 在 React 中向 Google 地图添加自定义样式