diff --git a/lib/widgets/album/collection_scaling.dart b/lib/widgets/album/collection_scaling.dart index a9a6c0f42..0c159f6a8 100644 --- a/lib/widgets/album/collection_scaling.dart +++ b/lib/widgets/album/collection_scaling.dart @@ -75,7 +75,7 @@ class _GridScaleGestureDetectorState extends State { onScaleUpdate: (details) { if (_scaledCountNotifier == null) return; final s = details.scale; - _scaledCountNotifier.value = (s <= 1 ? ui.lerpDouble(_start * 2, _start, s) : ui.lerpDouble(_start, _start / 2, s / 6)).clamp(columnCountMin, columnCountMax); + _scaledCountNotifier.value = (_start / s).clamp(columnCountMin, columnCountMax); }, onScaleEnd: (details) { if (_overlayEntry != null) { @@ -103,7 +103,7 @@ class _GridScaleGestureDetectorState extends State { // `Scrollable.ensureVisible` only works on already rendered objects // `RenderViewport.showOnScreen` can find any `RenderSliver`, but not always a `RenderMetadata` final scrollOffset = viewportClosure.scrollOffsetOf(sliverClosure, (row + 1) * newExtent - gridSize.height / 2); - viewportClosure.offset.jumpTo(scrollOffset.clamp(0, double.infinity)); + viewportClosure.offset.jumpTo(scrollOffset.clamp(.0, double.infinity)); }); }, child: widget.child, @@ -166,7 +166,7 @@ class _ScaleOverlayState extends State { ], ), ), - duration: const Duration(milliseconds: 300), + duration: const Duration(milliseconds: 200), child: ValueListenableBuilder( valueListenable: widget.scaledCountNotifier, builder: (context, columnCount, child) {