原生epub阅读

This commit is contained in:
DelLevin-Home
2026-06-27 14:06:44 +08:00
parent 5acbc3a602
commit d54e33e4cf
177 changed files with 6500 additions and 93933 deletions

View File

@@ -0,0 +1,47 @@
part of '../reader_screen.dart';
mixin _ImageViewerMixin on State<ReaderScreen> {
// === Borrowed state (provided by _ReaderScreenState fields) ===
BookSession get bookSession;
bool get showControls;
bool get isImageViewerVisible;
set isImageViewerVisible(bool v);
Uint8List? get currentImageData;
set currentImageData(Uint8List? v);
Rect? get currentImageRect;
set currentImageRect(Rect? v);
Future<void> handleImageLongPress(String imageUrl, Rect rect) async {
if (!bookSession.isLoaded) return;
if (showControls) return;
// Resolve image bytes from the epub via webViewHandler
final data = await webViewHandler.resolveImageFromEpub(
epubPath: bookSession.book['file_path'] as String? ?? '',
imageUrl: imageUrl,
fileHash: widget.bookId,
);
if (data == null || !mounted) return;
setState(() {
currentImageData = data;
currentImageRect = rect;
isImageViewerVisible = true;
});
}
void closeImageViewer() {
setState(() {
isImageViewerVisible = false;
currentImageData = null;
currentImageRect = null;
});
}
// Cross-reference: webViewHandler is defined in _ReaderScreenState
EpubWebViewHandler get webViewHandler;
}