如何在flutter [firebase]中获取文档快照?

时间:2020-07-25 10:48:35

标签: firebase flutter dart google-cloud-firestore

我正在使用GeoFlutterFire,这是一个用于查询附近用户位置的软件包。

这是我的代码。

Future<Stream<List<DocumentSnapshot>>> getUsers() async { 
    GeoFirePoint center = geo.point(latitude: lat, longitude: long);
    var collectionref =  Firestore.instance.collection("locations");
    double radius = 50;
    String field = 'position';
    
    Stream<List<DocumentSnapshot>> stream = geo.collection(collectionRef: collectionref).within(center: center, radius: radius, field: field);
    stream.forEach((element) {print(element);});
}

我要在控制台上打印出来

[Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot'] 

我尝试做所有事情,没有任何结果。 我也尝试过从函数返回Stream,但是没有成功。 请帮忙。

1 个答案:

答案 0 :(得分:1)

尝试以下操作:

  Stream<List<DocumentSnapshot>> getUsers() async* {
    GeoFirePoint center = geo.point(latitude: lat, longitude: long);
    var collectionref = Firestore.instance.collection("locations");
    double radius = 50;
    String field = 'position';
    yield* geo
        .collection(collectionRef: collectionref)
        .within(center: center, radius: radius, field: field);
  }

如果要在async*方法中使用此函数,则可以使用Stream返回一个yield*,然后可以使用build()返回这些值。您可以使用StreamBuilder小部件。