繁体   English   中英

如何使用折叠获取firestore文档值的总和? 扑

[英]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()),

您可以查看此 GIF 以检查它是否正确

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM