Flutter 图像资源服务捕获异常,在dispose()之后调用setState():\u ImageState
如果在图像仍在加载时切换页面,则会发生此错误。如果我返回页面,它也不会触发重新加载。 我不明白,使用loadingBuilder、frameBuilder和errorBuilder来避免这样的情况不是很重要吗?处理/重新加载不应该以这种方式自动处理吗? 我使用Image.network的方式是否正确,或者我的方法本身是否错误 我还尝试在Flutter 图像资源服务捕获异常,在dispose()之后调用setState():\u ImageState,flutter,dart,flutter-layout,flutter-widget,Flutter,Dart,Flutter Layout,Flutter Widget,如果在图像仍在加载时切换页面,则会发生此错误。如果我返回页面,它也不会触发重新加载。 我不明白,使用loadingBuilder、frameBuilder和errorBuilder来避免这样的情况不是很重要吗?处理/重新加载不应该以这种方式自动处理吗? 我使用Image.network的方式是否正确,或者我的方法本身是否错误 我还尝试在init状态中将Image.network分配给Image\u Image,然后尝试在dispose方法中关闭/处置/卸载,但没有任何方法可用 Image.net
init
状态中将Image.network
分配给Image\u Image
,然后尝试在dispose
方法中关闭/处置/卸载,但没有任何方法可用
Image.network(
widget.url,
fit: BoxFit.contain,
frameBuilder: (
BuildContext context,
Widget image,
int frame,
bool wasSynchronouslyLoaded,
) {
return AnimatedOpacity(
child: image,
opacity: frame == null ? 0 : 1,
duration: const Duration(seconds: 1),
curve: Curves.easeIn,
);
},
loadingBuilder: (
BuildContext context,
Widget image,
ImageChunkEvent loadingProgress,
) {
if (loadingProgress == null) return image;
if (loadingProgress != null &&
loadingProgress.cumulativeBytesLoaded <
loadingProgress.expectedTotalBytes) {
return Center(
child: CircularProgressIndicator(),
);
} else if (loadingProgress.cumulativeBytesLoaded ==
loadingProgress.expectedTotalBytes) {
return image;
}
return image;
},
errorBuilder:
(BuildContext context, Object exception, StackTrace stackTrace) {
return Center(
child: Text(
'${exception.toString()}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 15,
),
),
);
},
)
Image.net(
widget.url,
适合:BoxFit.contain,
框架生成器:(
构建上下文上下文,
控件图像,
int帧,
布尔被同步加载,
) {
返回能力(
孩子:图像,
不透明度:帧==null?0:1,
持续时间:常数持续时间(秒数:1),
曲线:Curves.easeIn,
);
},
加载生成器:(
构建上下文上下文,
控件图像,
ImageChunk事件加载进度,
) {
if(loadingProgress==null)返回图像;
if(loadingProgress!=null&&
加载Progress.CumulativeBytes加载<
加载进度。预期总字节){
返回中心(
子对象:CircularProgressIndicator(),
);
}else if(加载进度.cumulativeBytes加载==
加载进度。预期总字节){
返回图像;
}
返回图像;
},
错误生成器:
(BuildContext上下文、对象异常、StackTrace StackTrace){
返回中心(
子:文本(
“${exception.toString()}”,
textAlign:textAlign.center,
样式:TextStyle(
尺寸:15,
),
),
);
},
)