From 10bc17dace73e01f90cd155258b2dbc2d9ff6bbd Mon Sep 17 00:00:00 2001 From: LeLunZ <31982496+LeLunZ@users.noreply.github.com> Date: Tue, 21 Apr 2026 18:25:34 +0200 Subject: [PATCH] fix(mobile): simplify scale handling in photo_view_core.dart --- .../photo_view/src/core/photo_view_core.dart | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/mobile/lib/widgets/photo_view/src/core/photo_view_core.dart b/mobile/lib/widgets/photo_view/src/core/photo_view_core.dart index 574e7b2bdf..5009ee5333 100644 --- a/mobile/lib/widgets/photo_view/src/core/photo_view_core.dart +++ b/mobile/lib/widgets/photo_view/src/core/photo_view_core.dart @@ -301,12 +301,7 @@ class PhotoViewCoreState extends State controller.scaleAnimationBuilder(_animateControllerScale); controller.rotationAnimationBuilder(_animateControllerRotation); - final prevBoundaries = controller.scaleBoundaries; - if (prevBoundaries != null && prevBoundaries != widget.scaleBoundaries) { - _updateScaleBoundaries(prevBoundaries); - } else { - controller.scaleBoundaries = widget.scaleBoundaries; - } + _updateScaleBoundaries(); _scaleAnimationController = AnimationController(vsync: this) ..addListener(handleScaleAnimation) @@ -337,8 +332,11 @@ class PhotoViewCoreState extends State widget.onTapDown?.call(context, details, controller.value); } - void _updateScaleBoundaries(ScaleBoundaries prev) { - if (controller.scale != null && prev.initialScale > 0) { + void _updateScaleBoundaries() { + final prev = controller.scaleBoundaries; + if (prev == widget.scaleBoundaries) return; + + if (prev != null && controller.scale != null && prev.initialScale > 0) { final ratio = widget.scaleBoundaries.initialScale / prev.initialScale; controller.setScaleInvisibly(controller.scale! * ratio); } else { @@ -350,9 +348,7 @@ class PhotoViewCoreState extends State @override void didUpdateWidget(PhotoViewCore oldWidget) { super.didUpdateWidget(oldWidget); - if (widget.scaleBoundaries != oldWidget.scaleBoundaries) { - _updateScaleBoundaries(oldWidget.scaleBoundaries); - } + _updateScaleBoundaries(); } @override