我是flutter和firebase的新手,我正在尝试将Firestore文档添加到列表中。我已成功使用以下代码执行此操作:
getLocationListings(ListingNotifier listingNotifier, String location) async {
QuerySnapshot snapshot = await Firestore.instance
.collection('listings')
.where('location', isEqualTo: location)
.getDocuments();
print(location);
List<Listing> _listingList = [];
snapshot.documents.forEach((document) {
Listing listing = Listing.fromMap(document.data);
_listingList.add(listing);
});
listingNotifier.listingList = _listingList;
}
我现在正在使用Flutter软件包:“ GeoFlutterFire”,以便可以按地理位置查询Firestore文档。
我一直在关注以下自述文件:https : //pub.dev/packages/geoflutterfire 并读取数据,看起来他正在使用如下Stream:
Stream<List<DocumentSnapshot>> stream = geo.collection(collectionRef: collectionReference)
.within(center: center, radius: radius, field: field);
我的问题是,有什么办法可以_listingList
像我在第一个代码示例中所做的那样将流中的文档添加到我的文档中?
我已经尝试过仅使用提供的Stream示例关闭QuerySnapshot并使用stream更改快照,但是stream.documents.forEach((document)
不起作用
Geoflutterfire geo = Geoflutterfire();
Firestore _firestore = Firestore.instance;
GeoFirePoint center = geo.point(latitude: lat, longitude: lng);
var collectionReference = _firestore.collection('listings');
double radius = 50;
String field = 'position';
getLocationListings(ListingNotifier listingNotifier, GeoFirePoint location) async {
Stream<List<DocumentSnapshot>> stream = geo.collection(collectionRef: collectionReference)
.within(center: center, radius: radius, field: field);
List<Listing> _listingList = [];
stream.documents.forEach((document) {
Listing listing = Listing.fromMap(document.data);
_listingList.add(listing);
});
listingNotifier.listingList = _listingList;
}
继续说明您需要收听流的文档。这是他们给出的示例:
stream.listen((List<DocumentSnapshot> documentList) {
// doSomething()
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句