首页 > 解决方案 > 需要将异步调用传递给firestore中的查询参数

问题描述

我的方法无法编译,因为 getVenueId(user) 是异步的。我不能让 ordersStream 异步,因为它是一个流。

 @override
      Stream<List<Order>> ordersStream(String venueId) {
         User user= User();
         final venueId = await getVenueId(user);
     return
service.collectionStream(path: APIPath.orders(), queryBuilder: (query) => query.where('venue.id', isEqualTo: venueId), builder: (data, documentId) => Order.fromJson(documentId, data));

这是 myVenueId 方法..

Future<String> getVenueId(User user) async {
    final res = await Firestore.instance.document(APIPath.users(uid)).get();
    final data = res.data;
    user = User.fromJson(data);
    return user.venueIds;
  }

我需要将其用作查询参数

标签: fluttergoogle-cloud-firestore

解决方案


You could use getVenueId(user).then((value) => {//Do sth here});

Stream<List<Chat>> ordersStream(String venueId) {
    return get("url").then((venueId) {return service.collectionStream(path: APIPath.orders(), queryBuilder: (query) => query.where('venue.id', isEqualTo: venueId), builder: (data, documentId) => Order.fromJson(documentId, data));});
  }

推荐阅读