Flutter Firebase:错误状态:快照既没有数据也没有错误
Flutter Firebase: Bad state: Snapshot has neither data nor error
我正在尝试从 table 产品中获取 P_ID 添加到购物车的特定产品
现在下面的代码运行良好但只检索一个元素
final Stream<QuerySnapshot> cart = FirebaseFirestore.instance
.collection('products')
.where('pid', isEqualTo: cartitems[0])
.snapshots();
但是当我这样做时它不起作用
Stream<QuerySnapshot>? cart;
for (var i = 0; i < cartitems.length; i++) {
cart = FirebaseFirestore.instance
.collection('products')
.where('pid', isEqualTo: cartitems[i])
.snapshots();
}
它给我这个错误
The following StateError was thrown building StreamBuilder<QuerySnapshot<Object?>>(dirty, state: _StreamBuilderBaseState<QuerySnapshot<Object?>, AsyncSnapshot<QuerySnapshot<Object?>>>#9ea5d):
Bad state: Snapshot has neither data nor error
The relevant error-causing widget was:
StreamBuilder<QuerySnapshot<Object?>> StreamBuilder
您可以尝试使用 Stream Builder 来代替 for 循环来达到相同的效果。 Stream Builder 将自动取出您存储在 firebase 中的所有购物车项目。要消除快照错误,请执行以下 if 语句。
final CollectionReference cart = FirebaseFirestore.instance.collection('products');
child: StreamBuilder(
stream: cart
.where('pid', isEqualTo: cartitems)
.snapshots();
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) {
return const Text('Loading...');
}
if (snapshot.hasError) {
return const Text('Something went wrong.');
}
我正在尝试从 table 产品中获取 P_ID 添加到购物车的特定产品 现在下面的代码运行良好但只检索一个元素
final Stream<QuerySnapshot> cart = FirebaseFirestore.instance
.collection('products')
.where('pid', isEqualTo: cartitems[0])
.snapshots();
但是当我这样做时它不起作用
Stream<QuerySnapshot>? cart;
for (var i = 0; i < cartitems.length; i++) {
cart = FirebaseFirestore.instance
.collection('products')
.where('pid', isEqualTo: cartitems[i])
.snapshots();
}
它给我这个错误
The following StateError was thrown building StreamBuilder<QuerySnapshot<Object?>>(dirty, state: _StreamBuilderBaseState<QuerySnapshot<Object?>, AsyncSnapshot<QuerySnapshot<Object?>>>#9ea5d): Bad state: Snapshot has neither data nor error
The relevant error-causing widget was: StreamBuilder<QuerySnapshot<Object?>> StreamBuilder
您可以尝试使用 Stream Builder 来代替 for 循环来达到相同的效果。 Stream Builder 将自动取出您存储在 firebase 中的所有购物车项目。要消除快照错误,请执行以下 if 语句。
final CollectionReference cart = FirebaseFirestore.instance.collection('products');
child: StreamBuilder(
stream: cart
.where('pid', isEqualTo: cartitems)
.snapshots();
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) {
return const Text('Loading...');
}
if (snapshot.hasError) {
return const Text('Something went wrong.');
}