如何正确使用流异步/收益函数?

时间:2019-09-29 08:21:24

标签: asynchronous callback null stream yield

我的函数类型是Stream<QuerySnapshot>,用于实时更新数据。在该函数内部,我尝试从Cloud Firestore获取数据。我想使用该数据更新到我的应用程序。问题是退出then()后我得到的数据为空。我知道then()仅返回null。如何将数据保留在then()之外? 任何帮助将不胜感激。

Stream<QuerySnapshot> getUsersTripsStreamSnapshots(BuildContext context)async*{

          String data ;
          DocumentReference doc;

          final uid = await Provider.of(context).auth.getCurrentUID();
          DocumentReference documentReference = Firestore.instance.collection("users").document(uid);
          documentReference.get().then((datasnapshot){
          if(datasnapshot.exists){ 

             data =  datasnapshot.data["restaurant"].toString();
             setdata(data);
             print(data);   }
          });
        yield* Firestore.instance.collection('restaurants').document(getdata()).collection('trips').snapshots(); }


void  setdata(String data) {
    realdata=data;
    print(realdata);
 }

String getdata(){
    return realdata;
}

这是我尝试过的。之后(((datasnapshot){}

0 个答案:

没有答案