使用 Flutter 动态加载资源
Loading assets dynamically with Flutter
我是运行一个Flutter应用,需要显示产品列表。
我有一个资产文件夹(已加载到 pubspec.yaml),其中包含我的某些产品图片。
如果图像或占位符不存在,我不想显示它
尝试一:
Image buildImg() {
var img = `assets/img/${product.id}.png`;
if(File(img).existsSync()){
return Image.asset(img);
}else{
return Image.asset('assets/img/placeholder.png');
}
}
结果:条件始终为假
尝试二:
Image buildImg() async {
try{
var img = rootBundle.load(`assets/img/${product.id}.png`);
return Image.memory(img.buffer.asUint8List());
}catch (_){
return Image.asset('assets/img/placeholder.png');
}
}
结果:工作正常,但终端中有很多警告。
有没有更好的动态加载资源的方法?谢谢
图像小部件有一个错误生成器,当提供的路径无效时调用该生成器,
只需使用此代码
Image.asset("image path.png" , errorBuilder: (context, error, stackTrace) => Image.asset('placeholder path.png'),),
我是运行一个Flutter应用,需要显示产品列表。
我有一个资产文件夹(已加载到 pubspec.yaml),其中包含我的某些产品图片。
如果图像或占位符不存在,我不想显示它
尝试一:
Image buildImg() {
var img = `assets/img/${product.id}.png`;
if(File(img).existsSync()){
return Image.asset(img);
}else{
return Image.asset('assets/img/placeholder.png');
}
}
结果:条件始终为假
尝试二:
Image buildImg() async {
try{
var img = rootBundle.load(`assets/img/${product.id}.png`);
return Image.memory(img.buffer.asUint8List());
}catch (_){
return Image.asset('assets/img/placeholder.png');
}
}
结果:工作正常,但终端中有很多警告。
有没有更好的动态加载资源的方法?谢谢
图像小部件有一个错误生成器,当提供的路径无效时调用该生成器, 只需使用此代码
Image.asset("image path.png" , errorBuilder: (context, error, stackTrace) => Image.asset('placeholder path.png'),),