diff --git a/lib/ui/home/memories/full_screen_memory.dart b/lib/ui/home/memories/full_screen_memory.dart index 23c92adb1..26f993940 100644 --- a/lib/ui/home/memories/full_screen_memory.dart +++ b/lib/ui/home/memories/full_screen_memory.dart @@ -144,7 +144,9 @@ class _FullScreenMemoryState extends State { @override void dispose() { - _pageController?.dispose(); + debugPrint("FullScreenMemoryDisposed"); + // _pageController?.dispose(); + _pageController = null; super.dispose(); } @@ -160,22 +162,19 @@ class _FullScreenMemoryState extends State { } if (_index == totalFiles - 1) { // Deleted the last file + widget.memories.remove(removedMemory); await _pageController!.previousPage( duration: const Duration(milliseconds: 200), curve: Curves.easeInOut, ); - setState(() { - widget.memories.remove(removedMemory); - }); + setState(() {}); } else { + widget.memories.remove(removedMemory); await _pageController!.nextPage( duration: const Duration(milliseconds: 200), curve: Curves.easeInOut, ); - setState(() { - _index--; - widget.memories.remove(removedMemory); - }); + setState(() {}); } } @@ -276,6 +275,10 @@ class _FullScreenMemoryState extends State { } Widget _buildSwiper() { + debugPrint( + "FullScreenbuildSwiper: $_index and total ${widget.memories.length}", + ); + _pageController = PageController(initialPage: _index); return GestureDetector( behavior: HitTestBehavior.translucent, onTapDown: (TapDownDetails details) { @@ -313,6 +316,9 @@ class _FullScreenMemoryState extends State { autoPlay: false, tagPrefix: "memories", shouldDisableScroll: (value) { + if (value == _shouldDisableScroll) { + return; + } setState(() { _shouldDisableScroll = value; }); @@ -329,6 +335,9 @@ class _FullScreenMemoryState extends State { MemoriesService.instance.markMemoryAsSeen(widget.memories[index]), ); if (mounted) { + debugPrint( + "FullScreenonPageChanged: $index and total ${widget.memories.length}", + ); setState(() { _index = index; }); diff --git a/lib/ui/viewer/file/detail_page.dart b/lib/ui/viewer/file/detail_page.dart index 9dca421bc..be7315069 100644 --- a/lib/ui/viewer/file/detail_page.dart +++ b/lib/ui/viewer/file/detail_page.dart @@ -87,7 +87,7 @@ class _DetailPageState extends State { @override void dispose() { - _pageController?.dispose(); + // _pageController?.dispose(); SystemChrome.setEnabledSystemUIMode( SystemUiMode.manual, overlays: SystemUiOverlay.values, @@ -141,8 +141,7 @@ class _DetailPageState extends State { Widget _buildPageView() { _logger.info("Building with " + _selectedIndex.toString()); - // todo: perf.. fix this - _pageController?.dispose(); + // todo: perf.. do we always need to create new controller? _pageController = PageController(initialPage: _selectedIndex); return PageView.builder( itemBuilder: (context, index) {