【问题标题】:Flutter Range Error Firestore array inside collection集合内的 Flutter Range Error Firestore 数组
【发布时间】:2020-11-04 18:50:25
【问题描述】:

我正在从集合订单文档的产品数组中获取数据。

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(() {});
    }

【问题讨论】:

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

标签: flutter google-cloud-firestore


【解决方案1】:

您需要通过 products 数组的大小来绑定您的内部 j 循环。

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

【讨论】:

    猜你喜欢
    • 2021-11-25
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 2022-01-07
    • 2021-03-04
    • 2018-03-18
    • 2019-12-03
    • 1970-01-01
    相关资源
    最近更新 更多