Firestore从文档计算值

詹姆斯666

我创建了一个Future,可以打印出我的Firestore集合“产品”文档中的所有字段,但是此集合是许多同名的一个,如下所示,因此,我将打印出每个集合的所有值托收文件的栏位。我想为其自身集合“产品”中的每个文档添加“ productPrice”

第一批产品:

在此处输入图片说明

第二产品集合:

在此处输入图片说明

我的职责是聆听所有“产品”系列。当我尝试为每个文档打印productPrice字段值时,将它们全部打印出来,如下面的控制台所示。我需要将29.33 + 39.69的productPrice值相加,以得出69.02,但是我不知道如何在不添加值149.99的无关文档的情况下进行操作

  final FirebaseAuth _auth = FirebaseAuth.instance;
  final FirebaseFirestore _cloudStore = FirebaseFirestore.instance;

  List<OrderModel> orders = [];
  List<ProductModel> orderProductList = [];


Future startListening() async {
    User currentUser = _auth.currentUser;

    if(currentUser != null){
      _cloudStore
          .collection("orders")
          .doc(currentUser.email)
          .collection("orders")
          .snapshots()
          .listen((event) {

        orders = event.docs.map((value){
          return OrderModel(
            value.data()["name"], 
            value.data()["date"], 
            value.data()["dateTime"], 
            value.data()["status"],
            value.data()["productImage"],
          );
        }).toList();


        for(var i = 0; i < orders.length; i++){

          if(currentUser != null){
          _cloudStore
              .collection("orders")
              .doc(currentUser.email)
              .collection("orders")
              .doc(orders[i].dateTime)
              .collection("products")
              .snapshots()
              .listen((event){

                orderProductList = event.docs.map((value){

                  return ProductModel(
                    value.data()['productName'],
                    value.data()['productQuantity'],
                    value.data()['productPrice'],
                    value.data()['productImage'],
                  );
                  
                }).toList();

                print('separate');

                event.docs.forEach((value){
                  var prices = value.data()['productPrice'];
                  print(prices);
                });
                
                notifyListeners();

              });
          }
    }

        
        notifyListeners();

      });
    } else {
      return null;
    }
  }

我当前在控制台中的输出:

Restarted application in 881ms.
Reloaded 0 of 983 libraries in 32ms.
flutter: separate
flutter: 149.99
flutter: separate
flutter: 29.33
flutter: 39.69
麻黄碱

如果我正确理解了这个问题,则可以这样更改代码:

            double sum = 0.0;

            event.docs.forEach((value){
              var prices = value.data()['productPrice'];
              sum = sum + prices;
              print(prices);
            });

            print(sum);

您只需在print('separate');声明后添加即可

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章