Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 图像资源服务捕获异常,在dispose()之后调用setState():\u ImageState_Flutter_Dart_Flutter Layout_Flutter Widget - Fatal编程技术网

Flutter 图像资源服务捕获异常,在dispose()之后调用setState():\u ImageState

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

如果在图像仍在加载时切换页面,则会发生此错误。如果我返回页面,它也不会触发重新加载。 我不明白,使用loadingBuilder、frameBuilder和errorBuilder来避免这样的情况不是很重要吗?处理/重新加载不应该以这种方式自动处理吗? 我使用Image.network的方式是否正确,或者我的方法本身是否错误

我还尝试在
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,
),
),
);
},
)