我想在Flutter应用程序中显示存储在Firbase存储中的图像,但是我正在处理此问题。我按照answer上的说明进行操作,但是我的ref()
总是这样:
我创建此方法只是为了测试,当我尝试获取DownloadURL时,抖动会引发异常:
/ flutter(4664):IM图像资源服务引起的异常CA ═════════════════════ I / 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);
}
}
以下是图像信息:
所以,如果有人可以帮助我,我会很高兴的:)
答案 0 :(得分:1)
我想您想删除as String
强制转换。目前,您正在将其应用于ref.getDownloadURL()的结果。那肯定是不正确的。您想await
返回它的未来,而不是该对象的字符串版本。请注意,您尝试使用Uri.parse()
进行解析的是“ file:/// Instance%20of%20'Future'”-看到“未来的实例”一词吗?
您也可以暂时删除Uri.parse()
,而只专注于理解getDownloadUrl()返回的将来所包含的值。了解返回值并可以看到它包含所需的内容后,请尝试使用该返回值做其他事情。
答案 1 :(得分:1)
我只是想重现该问题,但是以某种方式,该代码对我来说很好用:
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: