【发布时间】:2020-11-20 12:33:27
【问题描述】:
我有一个简单的FutureBuilder,我在其中从查询中检索 Firestore 数据。我正在返回一个 QuerySnapshot。在同一个查询中,我从每个文档中更新一个“SUM”变量。但是如何使用这个 SUM 变量在文本小部件中显示?由于它是一个异步调用,因此该值不会更新。如果我在 firebase 查询中使用setState,则该值会不断增加而不会停止。
我在状态中初始化了 Sum 变量:
double sum = 0.0;
典型的 FutureBuilder 调用查询函数。 这是我的查询:
Future<QuerySnapshot> getItems() async {
var snapshot = await FirebaseFirestore.instance
.collection('Items')
.where('time', isGreaterThan: _startofDay)
.where('type', isEqualTo: 'food')
.orderBy('time', descending: false)
.get().then((value) {
value.docs.forEach((element) {
sum += element['price'];
});
return value;
});
}
我不想使用另一个运行相同查询并返回 Sum 值的 FutureBuilder,因为我想最小化我的 firebase 文档读取。 我只想在文本小部件中显示 Sum 值。 有什么方法可以实现吗?
【问题讨论】: