如何在Flutter中为404的图像URL捕获FetchFailure异常?

时间:2018-10-04 01:10:06

标签: image networking dart flutter

我有这样的东西:

try {
    final image = NetworkImageWithRetry(url,
        fetchStrategy: FetchStrategyBuilder(
            timeout: Duration(seconds: 2),
            transientHttpStatusCodePredicate: (code) {
              return code == null ||
                  FetchStrategyBuilder
                      .defaultTransientHttpStatusCodePredicate(code);
            }).build()
        );
      return Padding(
        padding: EdgeInsets.all(10.0),
        child: Image(
          image: image,
        ),
      );
  } catch FetchFailure {
    print('exception!');
    return Container();
  }

对于不存在的图像,该图像会尝试多次加载,并始终抛出:

EXCEPTION CAUGHT BY PACKAGE:FLUTTER_IMAGE
The following FetchFailure was thrown NetworkImageWithRetry failed to load

我怎么抓住这个?我已经尝试过catch Exceptioncatch FetchFailurecatch (error)

我还尝试根据错误代码返回小部件,但是FetchStrategyBuilder希望我返回布尔值。

2 个答案:

答案 0 :(得分:1)

这里是一种解决方案:https://github.com/flutter/flutter/issues/16592#issuecomment-427991812。请注意,它用于NetworkImage,而不是NetworkImageWithRetry(尚未)。

答案 1 :(得分:0)

之所以无法捕获FetchFailure错误,是因为该错误已在flutter_image内部捕获。您收到的错误消息中指出了这一点:``包装异常提示:FLUTTER_IMAGE

您能否提供更多有关为什么尝试捕获异常的详细信息?如果这样做的原因是您试图显示一个占位符图像以防图像加载失败,则可以使用FadeInImageCachedNetworkImage