Fix multi-image mode

This commit is contained in:
2025-02-21 13:00:15 +08:00
parent e829f567e5
commit 8adf61b54f
2 changed files with 12 additions and 11 deletions

View File

@@ -232,7 +232,7 @@ class _GalleryModeState extends State<_GalleryMode>
ImageProvider imageProvider = ImageProvider imageProvider =
_createImageProviderFromKey(imageKey, context); _createImageProviderFromKey(imageKey, context);
return Expanded( return Expanded(
child: Image( child: ComicImage(
image: imageProvider, image: imageProvider,
fit: BoxFit.contain, fit: BoxFit.contain,
), ),

View File

@@ -114,6 +114,7 @@ class _ReaderState extends State<Reader> with _ReaderLocation, _ReaderWindow {
late ReaderMode mode; late ReaderMode mode;
int get imagesPerPage { int get imagesPerPage {
if (mode.isContinuous) return 1;
if (isPortrait) { if (isPortrait) {
return appdata.settings['readerScreenPicNumberForPortrait'] ?? 1; return appdata.settings['readerScreenPicNumberForPortrait'] ?? 1;
} else { } else {
@@ -126,12 +127,6 @@ class _ReaderState extends State<Reader> with _ReaderLocation, _ReaderWindow {
bool get isPortrait => bool get isPortrait =>
MediaQuery.of(context).orientation == Orientation.portrait; MediaQuery.of(context).orientation == Orientation.portrait;
@override
void didChangeDependencies() {
super.didChangeDependencies();
_checkImagesPerPageChange();
}
void _checkImagesPerPageChange() { void _checkImagesPerPageChange() {
int currentImagesPerPage = imagesPerPage; int currentImagesPerPage = imagesPerPage;
if (_lastImagesPerPage != currentImagesPerPage) { if (_lastImagesPerPage != currentImagesPerPage) {
@@ -173,13 +168,10 @@ class _ReaderState extends State<Reader> with _ReaderLocation, _ReaderWindow {
} }
} }
if (widget.initialPage != null) { if (widget.initialPage != null) {
page = (widget.initialPage! / imagesPerPage).ceil(); page = widget.initialPage!;
} }
mode = ReaderMode.fromKey(appdata.settings['readerMode']); mode = ReaderMode.fromKey(appdata.settings['readerMode']);
history = widget.history; history = widget.history;
_lastImagesPerPage = isPortrait
? appdata.settings['readerScreenPicNumberForPortrait'] ?? 1
: appdata.settings['readerScreenPicNumberForLandscape'] ?? 1;
Future.microtask(() { Future.microtask(() {
updateHistory(); updateHistory();
}); });
@@ -194,6 +186,15 @@ class _ReaderState extends State<Reader> with _ReaderLocation, _ReaderWindow {
super.initState(); super.initState();
} }
@override
void didChangeDependencies() {
super.didChangeDependencies();
_lastImagesPerPage = imagesPerPage;
if (imagesPerPage != 1) {
page = (widget.initialPage! / imagesPerPage).ceil();
}
}
void setImageCacheSize() async { void setImageCacheSize() async {
var availableRAM = await MemoryInfo.getFreePhysicalMemorySize(); var availableRAM = await MemoryInfo.getFreePhysicalMemorySize();
if (availableRAM == null) return; if (availableRAM == null) return;