我正在尝试从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
答案 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;
}