Dart 将字符串从firestore保存到变量

Dart 将字符串从firestore保存到变量,dart,flutter,google-cloud-firestore,Dart,Flutter,Google Cloud Firestore,我试图从firestore中获取一个值,并将其保存到flutter中的一个变量中。我尝试使用StreamBuilder,但因为我没有构建小部件,所以它不起作用 为了澄清我的问题,我试图从firestore文档中获取url,然后在按下应用程序中的按钮时打开它 我还试图修改在另一个问题中找到的代码,但返回null Future\u getUrl()异步{ DocumentReference docRef=Firestore.instance.collection('information')。doc

我试图从firestore中获取一个值,并将其保存到flutter中的一个变量中。我尝试使用StreamBuilder,但因为我没有构建小部件,所以它不起作用

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

我还试图修改在另一个问题中找到的代码,但返回null

Future\u getUrl()异步{
DocumentReference docRef=Firestore.instance.collection('information')。document('pdf');
var数据;
docRef.get().then((datasnapshot){
data=datasnapshot.data['url'];
});
返回数据;
}

该集合称为信息、文档pdf和字段url。此方法将返回null,因为在返回数据之前,您不会等待get()将来返回。get()是未来的,因此它将异步执行。同时,您的程序将转到下一行,即返回数据

像这样的东西可以满足你的要求我想:

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

由于
\u getUrl
已标记为
async
,因此也可以在其正文中使用
wait
来返回正确的值:

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