Fix invalid total page count. Close #348

This commit is contained in:
2025-04-28 20:18:29 +08:00
parent 929c1a9d91
commit bf7b90313a
2 changed files with 14 additions and 6 deletions

View File

@@ -119,7 +119,7 @@ class _GalleryModeState extends State<_GalleryMode>
/// [totalPages] is the total number of pages in the current chapter. /// [totalPages] is the total number of pages in the current chapter.
/// More than one images can be displayed on one page. /// More than one images can be displayed on one page.
int get totalPages { int get totalPages {
if (!showSingleImageOnFirstPage) { if (!reader.showSingleImageOnFirstPage) {
return (reader.images!.length / reader.imagesPerPage).ceil(); return (reader.images!.length / reader.imagesPerPage).ceil();
} else { } else {
return 1 + return 1 +
@@ -144,11 +144,9 @@ class _GalleryModeState extends State<_GalleryMode>
super.initState(); super.initState();
} }
bool get showSingleImageOnFirstPage => appdata.settings["showSingleImageOnFirstPage"];
/// Get the range of images for the given page. [page] is 1-based. /// Get the range of images for the given page. [page] is 1-based.
(int start, int end) getPageImagesRange(int page) { (int start, int end) getPageImagesRange(int page) {
if (showSingleImageOnFirstPage) { if (reader.showSingleImageOnFirstPage) {
if (page == 1) { if (page == 1) {
return (0, 1); return (0, 1);
} else { } else {

View File

@@ -111,7 +111,13 @@ class _ReaderState extends State<Reader>
} }
@override @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; ComicType get type => widget.type;
@@ -125,7 +131,8 @@ class _ReaderState extends State<Reader>
late ReaderMode mode; late ReaderMode mode;
@override @override
bool get isPortrait => MediaQuery.of(context).orientation == Orientation.portrait; bool get isPortrait =>
MediaQuery.of(context).orientation == Orientation.portrait;
History? history; History? history;
@@ -343,6 +350,9 @@ abstract mixin class _ImagePerPageHandler {
} }
} }
bool get showSingleImageOnFirstPage =>
appdata.settings["showSingleImageOnFirstPage"];
/// The number of images displayed on one screen /// The number of images displayed on one screen
int get imagesPerPage { int get imagesPerPage {
if (mode.isContinuous) return 1; if (mode.isContinuous) return 1;