From bf7b90313a305a72c0e759ce9d194718fcddf176 Mon Sep 17 00:00:00 2001 From: nyne Date: Mon, 28 Apr 2025 20:18:29 +0800 Subject: [PATCH] Fix invalid total page count. Close #348 --- lib/pages/reader/images.dart | 6 ++---- lib/pages/reader/reader.dart | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/pages/reader/images.dart b/lib/pages/reader/images.dart index 752606a..ba7e54f 100644 --- a/lib/pages/reader/images.dart +++ b/lib/pages/reader/images.dart @@ -119,7 +119,7 @@ class _GalleryModeState extends State<_GalleryMode> /// [totalPages] is the total number of pages in the current chapter. /// More than one images can be displayed on one page. int get totalPages { - if (!showSingleImageOnFirstPage) { + if (!reader.showSingleImageOnFirstPage) { return (reader.images!.length / reader.imagesPerPage).ceil(); } else { return 1 + @@ -144,11 +144,9 @@ class _GalleryModeState extends State<_GalleryMode> super.initState(); } - bool get showSingleImageOnFirstPage => appdata.settings["showSingleImageOnFirstPage"]; - /// Get the range of images for the given page. [page] is 1-based. (int start, int end) getPageImagesRange(int page) { - if (showSingleImageOnFirstPage) { + if (reader.showSingleImageOnFirstPage) { if (page == 1) { return (0, 1); } else { diff --git a/lib/pages/reader/reader.dart b/lib/pages/reader/reader.dart index 0686bf3..a199948 100644 --- a/lib/pages/reader/reader.dart +++ b/lib/pages/reader/reader.dart @@ -111,7 +111,13 @@ class _ReaderState extends State } @override - int get maxPage => ((images?.length ?? 1) / imagesPerPage).ceil(); + int get maxPage { + if (!showSingleImageOnFirstPage) { + return (images!.length / imagesPerPage).ceil(); + } else { + return 1 + ((images!.length - 1) / imagesPerPage).ceil(); + } + } ComicType get type => widget.type; @@ -125,7 +131,8 @@ class _ReaderState extends State late ReaderMode mode; @override - bool get isPortrait => MediaQuery.of(context).orientation == Orientation.portrait; + bool get isPortrait => + MediaQuery.of(context).orientation == Orientation.portrait; History? history; @@ -343,6 +350,9 @@ abstract mixin class _ImagePerPageHandler { } } + bool get showSingleImageOnFirstPage => + appdata.settings["showSingleImageOnFirstPage"]; + /// The number of images displayed on one screen int get imagesPerPage { if (mode.isContinuous) return 1;