如何捕捉“无法加载资产:assets/images/sample_img_url.png”

SUD*_*ARA 2 error-handling try-catch flutter flutter-assetimage

有没有办法在 Flutter 中捕获“无法加载资产:资产/图像/sample_img_url.png”错误?

我想要做的是通过提供其路径(来自 API)来加载资产图像。但是,如果我没有与给定路径关联的图像,则需要加载示例图像。

我创建了一个自定义占位符小部件,如下所示。但是它并没有像我预期的那样工作。任何人都可以帮助我吗?

class ImagePlaceHolder extends StatelessWidget {
  final String path;
  final double width;

  const ImagePlaceHolder({Key key, this.path, this.width}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    Image finalImage;
    try{
      finalImage = Image.asset(
          path,
          width: width,
      );
    }
    catch(Exception){
      finalImage = Image.asset(
          "assets/images/app_update_logo.png",
          width: width,
      );
    }
    return finalImage;
  }
}
Run Code Online (Sandbox Code Playgroud)

SUD*_*ARA 5

好的,最后我找到了一个非常好的方法来克服这个问题。只需使用错误构建器。

Image.asset(
     "assets/images/subjects/api_given_image_name.png",
     width: 90,
     errorBuilder: (BuildContext context, Object exception, StackTrace stackTrace) {
           return Image.asset(
                "assets/images/your_sample_image.png",
                width: 90,
           );
     },
)
Run Code Online (Sandbox Code Playgroud)