mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-04-20 23:22:07 +00:00
+
This commit is contained in:
parent
5b2f1b4f36
commit
c6a142bcba
3 changed files with 24 additions and 29 deletions
|
|
@ -39,21 +39,17 @@ class NovelReaderView extends ConsumerWidget {
|
|||
late final Chapter chapter = isar.chapters.getSync(chapterId)!;
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final htmlContent = ref.watch(getHtmlContentProvider(chapter: chapter));
|
||||
final result = ref.watch(getHtmlContentProvider(chapter: chapter));
|
||||
|
||||
return NovelWebView(chapter: chapter, htmlContent: htmlContent);
|
||||
return NovelWebView(chapter: chapter, result: result);
|
||||
}
|
||||
}
|
||||
|
||||
class NovelWebView extends ConsumerStatefulWidget {
|
||||
const NovelWebView({
|
||||
super.key,
|
||||
required this.chapter,
|
||||
required this.htmlContent,
|
||||
});
|
||||
const NovelWebView({super.key, required this.chapter, required this.result});
|
||||
|
||||
final Chapter chapter;
|
||||
final AsyncValue<String> htmlContent;
|
||||
final AsyncValue<(String, EpubBook?)> result;
|
||||
|
||||
@override
|
||||
ConsumerState createState() {
|
||||
|
|
@ -117,13 +113,6 @@ class _NovelWebViewState extends ConsumerState<NovelWebView>
|
|||
fontSize = initFontSize;
|
||||
});
|
||||
});
|
||||
if (widget.chapter.archivePath != null) {
|
||||
final htmlFile = File(chapter.archivePath!);
|
||||
if (htmlFile.existsSync()) {
|
||||
final bytes = htmlFile.readAsBytesSync();
|
||||
EpubReader.readBook(bytes).then((book) => epubBook = book);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
late bool _isBookmarked = _readerController.getChapterBookmarked();
|
||||
|
|
@ -217,8 +206,9 @@ class _NovelWebViewState extends ConsumerState<NovelWebView>
|
|||
children: [
|
||||
Row(
|
||||
children: [
|
||||
widget.htmlContent.when(
|
||||
data: (htmlContent) {
|
||||
widget.result.when(
|
||||
data: (data) {
|
||||
epubBook = data.$2;
|
||||
Future.delayed(const Duration(milliseconds: 1000), () {
|
||||
if (!scrolled && _scrollController.hasClients) {
|
||||
_scrollController.animateTo(
|
||||
|
|
@ -244,7 +234,7 @@ class _NovelWebViewState extends ConsumerState<NovelWebView>
|
|||
physics: const BouncingScrollPhysics(),
|
||||
slivers: [
|
||||
HtmlWidget(
|
||||
htmlContent,
|
||||
data.$1,
|
||||
customWidgetBuilder: (element) =>
|
||||
_buildCustomWidgets(element),
|
||||
customStylesBuilder: (element) {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,10 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|||
part 'get_html_content.g.dart';
|
||||
|
||||
@riverpod
|
||||
Future<String> getHtmlContent(Ref ref, {required Chapter chapter}) async {
|
||||
Future<(String, EpubBook?)> getHtmlContent(
|
||||
Ref ref, {
|
||||
required Chapter chapter,
|
||||
}) async {
|
||||
if (!chapter.manga.isLoaded) {
|
||||
chapter.manga.loadSync();
|
||||
}
|
||||
|
|
@ -25,9 +28,9 @@ Future<String> getHtmlContent(Ref ref, {required Chapter chapter}) async {
|
|||
? element.Title == chapter.name
|
||||
: "Book" == chapter.name,
|
||||
).firstOrNull;
|
||||
return _buildHtml(tempChapter?.HtmlContent ?? "No content");
|
||||
return (_buildHtml(tempChapter?.HtmlContent ?? "No content"), book);
|
||||
}
|
||||
return _buildHtml("Local epub file not found!");
|
||||
return (_buildHtml("Local epub file not found!"), null);
|
||||
}
|
||||
final storageProvider = StorageProvider();
|
||||
final mangaDirectory = await storageProvider.getMangaMainDirectory(chapter);
|
||||
|
|
@ -52,7 +55,7 @@ Future<String> getHtmlContent(Ref ref, {required Chapter chapter}) async {
|
|||
source!,
|
||||
).getHtmlContent(chapter.manga.value!.name!, chapter.url!);
|
||||
}
|
||||
return _buildHtml(html.substring(1, html.length - 1));
|
||||
return (_buildHtml(html.substring(1, html.length - 1)), null);
|
||||
}
|
||||
|
||||
String _buildHtml(String input) {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'get_html_content.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getHtmlContentHash() => r'828774796ea69f55cdde0106644bc06e42c2b5db';
|
||||
String _$getHtmlContentHash() => r'19e6959d8fceb065b19c6c6d38cd1b5132a8ba94';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
@ -34,7 +34,7 @@ class _SystemHash {
|
|||
const getHtmlContentProvider = GetHtmlContentFamily();
|
||||
|
||||
/// See also [getHtmlContent].
|
||||
class GetHtmlContentFamily extends Family<AsyncValue<String>> {
|
||||
class GetHtmlContentFamily extends Family<AsyncValue<(String, EpubBook?)>> {
|
||||
/// See also [getHtmlContent].
|
||||
const GetHtmlContentFamily();
|
||||
|
||||
|
|
@ -72,7 +72,8 @@ class GetHtmlContentFamily extends Family<AsyncValue<String>> {
|
|||
}
|
||||
|
||||
/// See also [getHtmlContent].
|
||||
class GetHtmlContentProvider extends AutoDisposeFutureProvider<String> {
|
||||
class GetHtmlContentProvider
|
||||
extends AutoDisposeFutureProvider<(String, EpubBook?)> {
|
||||
/// See also [getHtmlContent].
|
||||
GetHtmlContentProvider({
|
||||
required Chapter chapter,
|
||||
|
|
@ -107,7 +108,7 @@ class GetHtmlContentProvider extends AutoDisposeFutureProvider<String> {
|
|||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<String> Function(GetHtmlContentRef provider) create,
|
||||
FutureOr<(String, EpubBook?)> Function(GetHtmlContentRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
|
|
@ -124,7 +125,7 @@ class GetHtmlContentProvider extends AutoDisposeFutureProvider<String> {
|
|||
}
|
||||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<String> createElement() {
|
||||
AutoDisposeFutureProviderElement<(String, EpubBook?)> createElement() {
|
||||
return _GetHtmlContentProviderElement(this);
|
||||
}
|
||||
|
||||
|
|
@ -144,13 +145,14 @@ class GetHtmlContentProvider extends AutoDisposeFutureProvider<String> {
|
|||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetHtmlContentRef on AutoDisposeFutureProviderRef<String> {
|
||||
mixin GetHtmlContentRef on AutoDisposeFutureProviderRef<(String, EpubBook?)> {
|
||||
/// The parameter `chapter` of this provider.
|
||||
Chapter get chapter;
|
||||
}
|
||||
|
||||
class _GetHtmlContentProviderElement
|
||||
extends AutoDisposeFutureProviderElement<String> with GetHtmlContentRef {
|
||||
extends AutoDisposeFutureProviderElement<(String, EpubBook?)>
|
||||
with GetHtmlContentRef {
|
||||
_GetHtmlContentProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
|
|
|
|||
Loading…
Reference in a new issue