Flutter Firebase查询-在文本小部件中显示设置值



我有一个简单的FutureBuilder,在这里我从查询中检索Firestore数据。我正在返回一个QuerySnapshot。在同一查询中,im更新一个";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 Value的FutureBuilder,因为我想尽量减少我的firebase文档读取量。我只想在文本小部件中显示Sum值。有什么办法做到这一点吗?

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) {
// set sum value as 0 before for each
setState(() => sum = 0);
value.docs.forEach((element) {
// then count sum value again
setState(() => sum += element['price']);
});
return value;
});
}

相关内容

  • 没有找到相关文章

最新更新