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