【问题标题】:Flutter Firebase: Bad state: Snapshot has neither data nor errorFlutter Firebase:状态不佳:快照既没有数据也没有错误
【发布时间】: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

【问题讨论】:

    标签: firebase flutter firebase-realtime-database


    【解决方案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.');
            }
    

    【讨论】:

      猜你喜欢
      • 2021-11-17
      • 2021-07-01
      • 2021-01-21
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 2022-07-10
      相关资源
      最近更新 更多