Flutter:如何将List传递到Firestore的condetion



如何将List作为参数传递给firestorewhere条件?获取符合条件的所有数据

即:-

List<String> topicList ;
getData() async {
SharedPreferences pref = await SharedPreferences.getInstance();
topicList = pref.getStringList("topicSymbol");
}
Stream<QuerySnapshot> getStreamQuery(String collPath) {
List<String> filters ;
return db
.collection('$collPath')
.where('Symbol', isEqualTo: getData()) // <---- the problem is here
.snapshots();
}

提前感谢

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

如果这对你有用,请告诉我!

由于您在其中使用await,您的getData()实际上返回了一个Future,而您在调用它时未能处理它。

最简单的修复方法是使getStreamQuery也异步:

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

当您调用getStreamQuery时,您需要在那里使用await工具。

相关内容

  • 没有找到相关文章

最新更新