我有这样的东西:
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 Exception
,catch FetchFailure
,catch (error)
。
我还尝试根据错误代码返回小部件,但是FetchStrategyBuilder
希望我返回布尔值。
答案 0 :(得分:1)
这里是一种解决方案:https://github.com/flutter/flutter/issues/16592#issuecomment-427991812。请注意,它用于NetworkImage,而不是NetworkImageWithRetry(尚未)。
答案 1 :(得分:0)
之所以无法捕获FetchFailure错误,是因为该错误已在flutter_image内部捕获。您收到的错误消息中指出了这一点:``包装异常提示:FLUTTER_IMAGE
您能否提供更多有关为什么尝试捕获异常的详细信息?如果这样做的原因是您试图显示一个占位符图像以防图像加载失败,则可以使用FadeInImage或CachedNetworkImage。