FirebaseStorage.instance.ref()即将为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FirebaseStorage.instance.ref()即将为空相关的知识,希望对你有一定的参考价值。
我想在我的Flutter应用程序中显示存储在Firbase存储上的图像,但我正在处理这个问题。我按照这个answer的说明,但我的ref()
总是这样:
我创建此方法只是为了测试,当我尝试获取DownloadURL时,flutter抛出异常:
/ flutter(4664):══╡图像资源服务的异常情况╞═════════════════════════════════════════════════════════════════════════════════════════════════ = / flutter(4664):抛出以下ArgumentError解析图像编解码器:I / flutter(4664):无效参数:无主机在URI文件中指定:/// Instance%20of%20'Future'
void _locateFile() async{
final ref = FirebaseStorage.instance
.ref()
.child('avatars')
.child('simples')
.child('woman1.png');
var url = Uri.parse(await ref.getDownloadURL() as String);
print(url);
}
}
这是图像信息:
所以,如果有人可以帮助我,我会非常高兴:)
我想你想要删除as String
演员阵容。现在你将它应用于ref.getDownloadURL()的结果。这当然不正确。你想await
它返回的未来,而不是该对象的字符串版本。请注意,您尝试使用Uri.parse()
解析的是“file:/// Instance%20of%20'Future'” - 请参阅“未来的实例”一词?
您也可以暂时删除Uri.parse()
,并专注于理解getDownloadUrl()返回的未来中包含的值。一旦你理解了返回值,并且可以看到它包含你想要的东西,那么尝试用它做一些其他事情。
我只是试图重现这个问题,但不知何故,这段代码对我来说很好:
var earringsRef = FirebaseStorage.instance.ref().child("EARRINGS.JPG");
var downloadURL = await earringsRef.getDownloadURL();
print(downloadURL);
var url = Uri.parse(await earringsRef.getDownloadURL() as String);
print(url);
两行都打印相同的URL:
以上是关于FirebaseStorage.instance.ref()即将为空的主要内容,如果未能解决你的问题,请参考以下文章
Firestore / Flutter - 如何获取文档 ID?