Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 集合内Firestore阵列的抖动范围错误_Flutter_Google Cloud Firestore - Fatal编程技术网

Flutter 集合内Firestore阵列的抖动范围错误

Flutter 集合内Firestore阵列的抖动范围错误,flutter,google-cloud-firestore,Flutter,Google Cloud Firestore,我正在从收款单文档的产品数组中获取数据 QuerySnapshot querySnapshot = FirebaseFirestore.instance.collection("orders").get(); var x = querySnapshot.docs[i].data()["products"][j]["oprice"]; 其中i&j是迭代器 但在范围值超出范围后,程序崩溃。现在,如何检查这些索引是否存在x if (x ==

我正在从收款单文档的产品数组中获取数据

QuerySnapshot querySnapshot = FirebaseFirestore.instance.collection("orders").get();
var x = querySnapshot.docs[i].data()["products"][j]["oprice"];
其中i&j是迭代器

但在范围值超出范围后,程序崩溃。现在,如何检查这些索引是否存在x

if (x == null) 
          break;
        
这会由于给出错误而失败

[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: RangeError (index): Invalid value: Not in inclusive range 0..1: 2
完整代码:

QuerySnapshot querySnapshot =
        await FirebaseFirestore.instance.collection("orders").get();

    for (int i = 0; i < querySnapshot.docs.length; i++) {
      var a = querySnapshot.docs[i];

      for (int j = 0;; j++) {
        if (a.data()["products"][j]["oprice"] == null) break;
   
        orderList.add(OrderList(
            orderNumber: a.data()["products"][j]["orderid"],
            price: a.data()["products"][j]["oprice"],
            addressReciever: a.data()["products"][j]["caddress"],
            mobileNumber: 9999123490.toString(),
            paymentStatus:
                a.data()["products"][j]["paymode"].toString().toUpperCase() ==
                        "CASH ON DELIVERY"
                    ? "Cash on Delivery"
                    : "Paid",
            recieverName: a.data()["products"][j]["cname"],
            orderStatus: a.data()["products"][j]["status"],
            productName: a.data()["products"][j]["name"]));
      }
      setState(() {});
    }
QuerySnapshot QuerySnapshot=
等待FirebaseFirestore.instance.collection(“订单”).get();
for(int i=0;i
您需要根据products数组的大小绑定内部
j
循环

      for (int j = 0; a.data()["products"].length; j++) {
          // a.data()["products"][j] is safe to use here.
      }

你在你的内部j环上没有边界。它将永远运行,直到出现错误。为什么不将循环绑定到查询中的产品数?我使用了break语句,但这行不通。程序将在中断发生之前崩溃,因为您已经超出了数组限制,错误消息告诉您。