diff --git a/lib/widgets/fullscreen/image_page.dart b/lib/widgets/fullscreen/image_page.dart index 370cce2c2..6f09176fa 100644 --- a/lib/widgets/fullscreen/image_page.dart +++ b/lib/widgets/fullscreen/image_page.dart @@ -23,6 +23,7 @@ class FullscreenPage extends StatefulWidget { } class FullscreenPageState extends State with SingleTickerProviderStateMixin { + bool _isInitialScale = true; int _currentHorizontalPage, _currentVerticalPage = 0; PageController _horizontalPager, _verticalPager; ValueNotifier _overlayVisible = ValueNotifier(false); @@ -62,6 +63,7 @@ class FullscreenPageState extends State with SingleTickerProvide PageView( scrollDirection: Axis.vertical, controller: _verticalPager, + physics: _isInitialScale ? PageScrollPhysics() : NeverScrollableScrollPhysics(), onPageChanged: (page) => setState(() => _currentVerticalPage = page), children: [ ImagePage( @@ -69,6 +71,7 @@ class FullscreenPageState extends State with SingleTickerProvide pageController: _horizontalPager, onTap: () => _overlayVisible.value = !_overlayVisible.value, onPageChanged: (page) => setState(() => _currentHorizontalPage = page), + onScaleChanged: (state) => setState(() => _isInitialScale = state == PhotoViewScaleState.initial), ), InfoPage( entry: entries[_currentHorizontalPage], @@ -141,12 +144,14 @@ class ImagePage extends StatefulWidget { final PageController pageController; final VoidCallback onTap; final ValueChanged onPageChanged; + final ValueChanged onScaleChanged; const ImagePage({ this.entries, this.pageController, this.onTap, this.onPageChanged, + this.onScaleChanged, }); @override @@ -174,6 +179,7 @@ class ImagePageState extends State with AutomaticKeepAliveClientMixin ), pageController: widget.pageController, onPageChanged: widget.onPageChanged, + scaleStateChangedCallback: widget.onScaleChanged, transitionOnUserGestures: true, scrollPhysics: BouncingScrollPhysics(), );