如何将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
工具。