Flutter InteractiveViewer class 加载新图片时如何 Zoom/scale out
Flutter InteractiveViewer class how to Zoom/scale out when loading a new Image
我喜欢 InteractiveViewer class,它让我的用户可以张开双指来放大图像小部件。
但是,它给了我一个错误。如果用户在图像上保持放大,然后退出包含该图像的 DetailsScreen,然后使用新的细节和图像再次激活 DetailScreen,则新图像将按与旧图像相同的比例放大。 InteractiveViewer 的比例没有被重置。
我试图通过在其构造函数中为 InteractiveViewer 提供一个 transformationController: imageZoomController,
参数来重置它。然后,当我退出 DetailScreen 时,我尝试 imageZoomController.dispose()
,但这会导致很多崩溃...嗯。
它只需要重置为完全缩小,我需要重新触发 InteractiveViewer 的初始 minScale: 1,
参数。
我不赞成使用 InteractiveViewer 的 onInteractionEnd
参数,因为当我故意放大图像时它会跳开,我觉得这很烦人。
感谢帮助。
你可以试试这个包:https://pub.dev/packages/photo_view
它还允许我们双击动画以初始化比例,甚至无需触摸控制器。
用法:
@override
Widget build(BuildContext context) {
return Container(
child: PhotoView(
imageProvider: AssetImage("assets/large-image.jpg"),
)
);
}
通过实验找到了解决方案,它似乎在模拟器中工作,不太清楚为什么,但我希望问题解决了。
imageZoomController.value = Matrix4.identity();
Navigator.of(context).pop();
当我退出 DetailsScreen 时,imageZoomController.value 似乎将 InteractiveViewer 的缩放比例重置为 1。
感谢 Thea 的建议,如果其他人有我的问题并且我的解决方案不起作用,请尝试 Thea 的插件。
以后我会提供更多上下文、Widgets 等,不好意思。抱歉@Nisanth
viewController.value = Matrix4.identity();
让您对照片进行初始缩放
TransformationController viewController = TransformationController();
var initialControllerValue;
InteractiveViewer(
transformationController: viewController,
onInteractionStart: (details){
initialControllerValue = viewController.value;
},
onInteractionEnd: (details){
viewController.value = initialControllerValue;
},
我喜欢 InteractiveViewer class,它让我的用户可以张开双指来放大图像小部件。
但是,它给了我一个错误。如果用户在图像上保持放大,然后退出包含该图像的 DetailsScreen,然后使用新的细节和图像再次激活 DetailScreen,则新图像将按与旧图像相同的比例放大。 InteractiveViewer 的比例没有被重置。
我试图通过在其构造函数中为 InteractiveViewer 提供一个 transformationController: imageZoomController,
参数来重置它。然后,当我退出 DetailScreen 时,我尝试 imageZoomController.dispose()
,但这会导致很多崩溃...嗯。
它只需要重置为完全缩小,我需要重新触发 InteractiveViewer 的初始 minScale: 1,
参数。
我不赞成使用 InteractiveViewer 的 onInteractionEnd
参数,因为当我故意放大图像时它会跳开,我觉得这很烦人。
感谢帮助。
你可以试试这个包:https://pub.dev/packages/photo_view
它还允许我们双击动画以初始化比例,甚至无需触摸控制器。
用法:
@override
Widget build(BuildContext context) {
return Container(
child: PhotoView(
imageProvider: AssetImage("assets/large-image.jpg"),
)
);
}
通过实验找到了解决方案,它似乎在模拟器中工作,不太清楚为什么,但我希望问题解决了。
imageZoomController.value = Matrix4.identity();
Navigator.of(context).pop();
当我退出 DetailsScreen 时,imageZoomController.value 似乎将 InteractiveViewer 的缩放比例重置为 1。
感谢 Thea 的建议,如果其他人有我的问题并且我的解决方案不起作用,请尝试 Thea 的插件。
以后我会提供更多上下文、Widgets 等,不好意思。抱歉@Nisanth
viewController.value = Matrix4.identity();
让您对照片进行初始缩放
TransformationController viewController = TransformationController();
var initialControllerValue;
InteractiveViewer(
transformationController: viewController,
onInteractionStart: (details){
initialControllerValue = viewController.value;
},
onInteractionEnd: (details){
viewController.value = initialControllerValue;
},