[英]How to get sum of firestore document values using fold? Flutter
body: StreamBuilder<QuerySnapshot>(
stream: record,
builder:
(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
..........
..........
final totalIncome =
snapshot.data?.docs.fold<double>(0, (previousValue, element) {
return previousValue + (element['incomeAmount'] ?? 0.0);
}) as double;
...........
...........
如果存在字段,则此方法有效。 如果 firestore 中没有字段,则会给出错误字段在 DocumentSnapshotPlatform 中不存在
我怎样才能让它像这样工作
元素?['incomeAmount']
或者如果没有字段返回 0?
您可以创建一个函数来获取totalAmount 。 它可以是这样的
int totalCost = 0;
void getTotal() {
FirebaseFirestore.instance.
.collection('your_collection_name')
.snapshots()
.listen(event) {
totalCost = (event.docs.fold<int>(
0,(p, c) => prev + (Model.fromJson(c.data() as Map<String, dynamic>).amount),
);
});
}
然后在didChangeDependencies你可以写这段代码,
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (mounted) {
getTotal();
}
}
最后,您可以在任意位置显示 totalCost 的值。
Text(totalCost.toString()),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.