From aa9f4dae825c59d7bb76053fb06b0358e952e053 Mon Sep 17 00:00:00 2001 From: nyne Date: Sat, 19 Apr 2025 10:54:25 +0800 Subject: [PATCH] Reset state of photo view controllers on page change. Close #331 --- lib/pages/reader/images.dart | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/pages/reader/images.dart b/lib/pages/reader/images.dart index 3e51115..4e8fd4a 100644 --- a/lib/pages/reader/images.dart +++ b/lib/pages/reader/images.dart @@ -143,7 +143,6 @@ class _GalleryModeState extends State<_GalleryMode> /// For current page, it will do nothing because it is already on the screen. /// For other pages, it will do a pre-download cache. void cache(int startPage) { - print("Cache page $startPage"); for (int i = startPage - 1; i <= startPage + preCacheCount; i++) { if (i == startPage || i <= 0 || i > totalPages) continue; bool shouldPreCache = i == startPage + 1 || i == startPage - 1; @@ -155,7 +154,6 @@ class _GalleryModeState extends State<_GalleryMode> int startIndex = (page - 1) * reader.imagesPerPage; int endIndex = math.min(startIndex + reader.imagesPerPage, reader.images!.length); - print("Cache page $page: $startIndex-$endIndex"); for (int i = startIndex; i < endIndex; i++) { if (shouldPreCache) { _precacheImage(i+1, context); @@ -264,6 +262,13 @@ class _GalleryModeState extends State<_GalleryMode> reader.setPage(i); context.readerScaffold.update(); } + // Remove other pages' controllers to reset their state. + var keys = photoViewControllers.keys.toList(); + for (var key in keys) { + if (key != i) { + photoViewControllers.remove(key); + } + } }, ), ); @@ -1060,7 +1065,6 @@ void _precacheImage(int page, BuildContext context) { if (page <= 0 || page > context.reader.images!.length) { return; } - print("Precache image for page $page"); precacheImage( _createImageProvider(page, context), context, @@ -1073,7 +1077,6 @@ void _preDownloadImage(int page, BuildContext context) { if (page <= 0 || page > context.reader.images!.length) { return; } - print("Preload image for page $page"); var reader = context.reader; var imageKey = reader.images![page - 1]; var cid = reader.cid;