【问题标题】:Flutter :How to pass List to Firestore where condetionFlutter:如何将列表传递到 Firestore where 条件
【发布时间】:2021-09-19 17:22:37
【问题描述】:

如何将 List 作为参数传递到条件的 firestore ?让所有数据符合条件

即:-

List<String> topicList ;
getData() async {
    SharedPreferences pref = await SharedPreferences.getInstance();

    topicList = pref.getStringList("topicSymbol");
  }

 Stream<QuerySnapshot> getStreamQurey(String collPath) {
    List<String> filters ;
    return db
        .collection('$collPath')
        .where('Symbol', isEqualTo: getData()) // <---- the problem is here
        .snapshots();
  }

提前谢谢你

【问题讨论】:

    标签: firebase flutter google-cloud-firestore flutter-layout flutter-web


    【解决方案1】:

    由于您在那里使用 await,因此您的 getData() 实际上会返回一个 Future - 而您在调用它时没有处理它。

    最简单的解决方法是使 getStreamQurey 也异步:

      getData() async {
        SharedPreferences pref = await SharedPreferences.getInstance();
    
        return pref.getStringList("topicSymbol");
      }
    
      Future<Stream<QuerySnapshot>> getStreamQurey(String collPath) async {
        List<String> filters ;
        return db
            .collection('$collPath')
            .where('Symbol', isEqualTo: await getData())
            .snapshots();
      }
    

    当您调用getStreamQurey 时,您需要使用await 那里的工具。

    【讨论】:

    • 我通过了 getStreamQurey StreamBuilder,当我按照你说的做时显示错误参数类型'Future>>' 不能分配给参数类型'Stream >'
    • 当我将 topicList 传递给 isEqualTo 时,它返回 Null。但是当我设置为 isEqualTo: topicList[1] 它的工作但它只返回一个结果
    • 正如我在回答中所说:在调用getStreamQurey 时,您也需要使用await
    【解决方案2】:

    这种方法存在一些问题:首先,getData 是一个异步函数,并且您不是在等待从 get data 中获取返回列表。您想在 getStreamQuery 中的返回调用之前调用 await getData()。 其次,您应该使用.where('Symbol', isEqualTo: topicList) 来比较列表(这是因为 getData() 返回 null)

    让我知道这是否适合你!

    【讨论】:

    • 我通过了 getStreamQurey StreamBuilder,当我按照你说的做时显示错误参数类型'Future>>' 不能分配给参数类型'Stream >'
    • 当我将 topicList 传递给 isEqualTo 时,它返回 Null。但是当我设置为 isEqualTo: topicList[1] 它的工作但它只返回一个结果
    猜你喜欢
    • 2021-05-25
    • 2019-08-20
    • 1970-01-01
    • 2018-12-05
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多