Flutter Firebase:状态不佳:快照既没有数据也没有错误
Posted
技术标签:
【中文标题】Flutter Firebase:状态不佳:快照既没有数据也没有错误【英文标题】:Flutter Firebase: Bad state: Snapshot has neither data nor error 【发布时间】:2021-12-23 00:57:40 【问题描述】:我正在尝试从表 Products 中获取 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();
它给了我这个错误
在构建 StreamBuilder
>(dirty, state: _StreamBuilderBaseState , AsyncSnapshot >>#9ea5d) 时引发了以下 StateError: 坏状态:快照既没有数据也没有错误
相关的导致错误的小部件是: StreamBuilder
> StreamBuilder
【问题讨论】:
【参考方案1】:您可以尝试使用 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.');
【讨论】:
以上是关于Flutter Firebase:状态不佳:快照既没有数据也没有错误的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:Firebase 身份验证和 Firestore 快照流
如何在firebase-flutter中为快照数据指定字段[重复]
在加载 Firebase 快照时使用 Flutter 中的 Bloc 流式等待和阻止其他事件
在 Flutter 中从 Firebase FireCloud 接收数据时,StreamBuilder 中的快照代码不会被执行