使用 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'),),