【发布时间】: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