首页 > 解决方案 > 如何计算 querySnapshot 的总和?带有颤振/云火库

问题描述

我成功地从 Cloud Firestore 读取数据,但我不知道如何计算文档中的值的总和。

这是我获取文档数据的方式:

firestoreInstance.collection("parrainage").get().then((querySnapshot) {
  querySnapshot.docs.forEach((result) {
    print("${result.data() } ");  // my input
  });
});

{
  key1: 1,
  key2: 1,
  key3: 1,
  key4: 1,
  key5: 1
}

这是我期望的输出:

sum= 5;

在此处输入图像描述

如果我在第一个集合中使用它,它返回 1 而不是 2:

final sum = result.data().values.fold<int>(0, (acc, curr) => acc + curr));
print('sum=$sum');

但是,如果我使用与第二个示例相同的代码它可以工作,但是我手动添加数据,我没有成功以编程方式添加此数据

在此处输入图像描述

谢谢你

标签: flutterdart

解决方案


您可以使用折叠方法:

如果result.data()Map<String, int>

final sum = result.data().values.fold<int>(0, (acc, curr) => acc + curr));
print('sum=$sum');

包含静态数据的完整样本

void main() {
  final Map<String, int> data = {
    'key1': 1,
    'key2': 0,
    'key3': 1,
    'key4': 1,
    'key5': 1,
  };
  final sum = data.values.fold<int>(0, (acc, curr) => acc + curr);
  print('sum=$sum');
}

这打印sum=4


推荐阅读