Как правильно использовать потоковую функцию async / yield? - PullRequest
0 голосов
/ 29 сентября 2019

Мой тип функции Stream<QuerySnapshot> для обновления данных в режиме реального времени.Внутри этой функции я пытаюсь получить данные из облачного пожарного хранилища.Я хочу использовать эти данные для обновления моего приложения.Проблема в том, что данные, которые я получил, обнуляются после выхода из then().Я знаю, что then() возвращает только ноль.как сохранить данные за пределами 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) {}

...