首页 > 解决方案 > Flutter InteractiveViewer 类如何在加载新图像时缩放/缩小

问题描述

我喜欢InteractiveViewer 类,它让我的用户可以通过捏合来放大图像小部件。

但是,它给了我一个错误。如果用户仍然放大图像,然后退出包含该图像的 DetailsS​​creen,然后使用新的详细信息和图像再次激活 DetailScreen,则新图像将放大与旧图像相同的数量。InteractiveViewer 的比例未重置。

我试图通过transformationController: imageZoomController,在其构造函数中为 InteractiveViewer 提供一个参数来重置它。然后,当我退出 DetailScreen 时,我尝试过imageZoomController.dispose(),但这会导致很多崩溃......嗯。

它只需要重置为完全缩小,我需要重新触发 InteractiveViewer 的初始minScale: 1, 参数。

我不赞成使用 InteractiveViewer 的onInteractionEnd参数,因为当我故意放大图像并且它跳离它时,我觉得它很烦人。

帮助表示赞赏。

标签: imageflutterzooming

解决方案


你可以试试这个包:https ://pub.dev/packages/photo_view

它还允许我们双击动画以初始化缩放,甚至无需触摸控制器。

用法:

@override
Widget build(BuildContext context) {
  return Container(
    child: PhotoView(
      imageProvider: AssetImage("assets/large-image.jpg"),
    )
  );
}

推荐阅读