我想在firbase存储中检索私有映像的下载URL。
您好尝试了该网站上的许多建议,但所有建议最终都得到相同的结果。
我尝试了以下代码:
getImageNow() async {
StorageReference ref =
FirebaseStorage.instance.ref().child("/1.jpg");
String url = (await ref.getDownloadURL()).toString();
return url;
}
当我在函数内打印url时它起作用,但是当我尝试调用print(getImageNow())
来获取url时,我只是得到了"Instance of 'Future<dynamic>'"
更新*************
最后,我试图得到这样的东西:
return Image.network(
getImageNow(),
);
但是我无法使其与异步一起工作。
答案 0 :(得分:2)
由于getImageNow()
是异步的(如async
关键字所示),因此您将需要使用await
来使调用代码等待结果:
print(await getImageNow())
await
在这里所做的是,它实际上可以将Future
展开,并且等效于:
getImageNow().then((value) => print(value));
答案 1 :(得分:1)
这就是我上传并获取下载网址的方式
这部分是我如何从选择器中获取图像
Future getImage() async {
var image = await ImagePicker.pickImage(source: ImageSource.gallery);
setState(() {
_image = image;
print('Image Path $_image');
});
}
然后我上传
Future uploadPic(BuildContext context) async {
String fileName = basename(_image.path);
StorageReference firebaseStorageRef = FirebaseStorage.instance.ref().child(fileName);
StorageUploadTask uploadTask = firebaseStorageRef.putFile(_image);
StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;
final String url = (await taskSnapshot.ref.getDownloadURL());
print('URL Is $url');
}
希望它将对某人有所帮助