Flutter 加载带有JPG扩展名或PNG扩展名的图像

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'?也许

在我的Flatter应用程序中,我通过以下方式返回资产(产品图像)名称:

类产品{
// ...
最终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
关键字,我不得不记下并。。。