将字符串从Firestore保存到变量

时间:2019-03-28 18:18:57

标签: dart flutter google-cloud-firestore

我正在尝试从Firestore获取值并将其保存到flutter中的变量中。我尝试使用StreamBuilder,但是由于我没有构建窗口小部件,因此无法正常工作。

为澄清我的问题,我试图从Firestore文档中获取一个url,然后在我按应用程序中的按钮时打开它。

我还尝试适应在另一个问题中找到的代码,但是返回空值。

Future _getUrl() async{
    DocumentReference docRef = Firestore.instance.collection('information').document('pdf');
    var data;
    docRef.get().then((datasnapshot){
        data = datasnapshot.data['url'];
    });
    return data;
  }

该集合称为信息,文档 pdf 和字段 url

2 个答案:

答案 0 :(得分:1)

此方法将返回null,因为您在返回数据之前不等待get()将来返回。 docRef.get()是Future,因此它将异步执行。同时,您的程序将移至下一行,即返回数据。

这样的事情会满足您的要求:

Future _getUrl() async{
  DocumentReference docRef = Firestore.instance.collection('information').document('pdf');
  return docRef.get().then((datasnapshot){
    return datasnapshot.data['url'];
  });
}

答案 1 :(得分:0)

由于_getUrl已被标记为async,因此您也可以在其主体中使用await返回正确的值:

Future _getUrl() async {
  DocumentReference docRef = Firestore.instance.collection('information').document('pdf');
  await datasnapshot = docRef.get();
  let data = datasnapshot.data['url'];
  return data;
}