Flutter 加载带有JPG扩展名或PNG扩展名的图像
在我的Flatter应用程序中,我通过以下方式返回资产(产品图像)名称:Flutter 加载带有JPG扩展名或PNG扩展名的图像,flutter,dart,Flutter,Dart,在我的Flatter应用程序中,我通过以下方式返回资产(产品图像)名称: 类产品{ // ... 最终int id; // ... 字符串get assetName=>“$id-0.jpg”; } 稍后,我使用资产名称,如: /。。。 图片:AssetImage(product.assetName), // ... 现在,问题是有些图像是*.jpg,有些是*.png,比如: 是否有方法告诉颤振图像加载程序尝试加载'$id-0.jpg',如果文件不存在,则尝试加载'$id-0.png'?也许
类产品{
// ...
最终int id;
// ...
字符串get assetName=>“$id-0.jpg”;
}
稍后,我使用资产名称,如:
/。。。
图片:AssetImage(product.assetName),
// ...
现在,问题是有些图像是*.jpg
,有些是*.png
,比如:
是否有方法告诉颤振图像加载程序尝试加载
'$id-0.jpg'
,如果文件不存在,则尝试加载'$id-0.png'
?也许我可以用正则表达式来实现这一点,但我不知道如何实现。您可以通过rootBundle.load
和try catch
块来确定资产是否存在<如果找不到资源,code>rootBundle.load将引发异常
字节数据图像;
试一试{
image=wait rootBundle.load(assetNameHere.jpg);
}
捕获(e){
image=wait rootBundle.load(assetNameHere.png);
}
我不知道这将在不存在的资产上引发的异常,因此我无法告诉您在上捕获的错误,但您可以找出这一点,并修改代码,使其仅在该异常类型上执行png代码,而不是执行所有操作
使用这种方法,因为您已经被迫将图像加载到内存中,所以您可以存储字节数据
,并使用内存图像
,而不是AssetImage
。此外,由于使用wait
关键字,我不得不记下并。。。