Flutter中查询Firestore集合指定字段等于特定字符串的报错解决问询
问题修复方案
错误根源
你代码存在两处核心逻辑错误:
where()条件查询执行后返回的是Query类型,并非CollectionReference类型,无需强行类型转换- 你错误调用了
.get()方法:该方法用于一次性拉取数据,返回Future<QuerySnapshot>类型,和你要获取实时数据流的需求不符
修正后的查询方法代码
final FirebaseFirestore _firestore = FirebaseFirestore.instance; final CollectionReference _mainCollection = _firestore.collection('Sales'); Stream<QuerySnapshot> readFeeds() { // 用Query类型接收条件查询结果 Query notesItemQuery = _mainCollection.where('seller_location', isEqualTo: "London"); // 直接返回查询的实时数据流即可 return notesItemQuery.snapshots(); }
可选优化
如果需要动态切换查询的城市,可以修改方法为带参数形式:
Stream<QuerySnapshot> readFeeds(String targetCity) { Query notesItemQuery = _mainCollection.where('seller_location', isEqualTo: targetCity); return notesItemQuery.snapshots(); }
调用时传入对应的城市名称即可,你现有StreamBuilder部分的代码无需修改可以直接正常运行。
内容的提问来源于stack exchange,提问作者winfred adrah
相关产品推荐
相关产品推荐

