mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-03-11 17:25:32 +00:00
+
This commit is contained in:
parent
3b9f6f7a5e
commit
5932181138
12 changed files with 65 additions and 59 deletions
|
|
@ -139,7 +139,10 @@ class _CodeEditorState extends ConsumerState<CodeEditor> {
|
|||
final filterList = source != null ? getFilterList(source: source!) : [];
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
leading: BackButton(onPressed: () => Navigator.pop(context, source)),
|
||||
leading: BackButton(onPressed: () {
|
||||
isar.writeTxnSync(() => isar.sources.putSync(source!));
|
||||
Navigator.pop(context, source);
|
||||
}),
|
||||
),
|
||||
body: Column(
|
||||
children: [
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ class _DoubleColummViewState extends State<DoubleColummView>
|
|||
if (widget.datas[0] != null)
|
||||
Flexible(
|
||||
child: ImageViewCenter(
|
||||
datas: widget.datas[0]!,
|
||||
data: widget.datas[0]!,
|
||||
loadStateChanged: (state) {
|
||||
if (state.extendedImageLoadState ==
|
||||
LoadState.loading) {
|
||||
|
|
@ -209,7 +209,7 @@ class _DoubleColummViewState extends State<DoubleColummView>
|
|||
if (widget.datas[1] != null)
|
||||
Flexible(
|
||||
child: ImageViewCenter(
|
||||
datas: widget.datas[1]!,
|
||||
data: widget.datas[1]!,
|
||||
loadStateChanged: (state) {
|
||||
if (state.extendedImageLoadState ==
|
||||
LoadState.loading) {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ class DoubleColummVerticalView extends StatelessWidget {
|
|||
if (datas[0] != null)
|
||||
Flexible(
|
||||
child: ImageViewCenter(
|
||||
datas: datas[0]!,
|
||||
data: datas[0]!,
|
||||
loadStateChanged: (state) {
|
||||
if (state.extendedImageLoadState == LoadState.loading) {
|
||||
final ImageChunkEvent? loadingProgress =
|
||||
|
|
@ -112,7 +112,7 @@ class DoubleColummVerticalView extends StatelessWidget {
|
|||
if (datas[1] != null)
|
||||
Flexible(
|
||||
child: ImageViewCenter(
|
||||
datas: datas[1]!,
|
||||
data: datas[1]!,
|
||||
loadStateChanged: (state) {
|
||||
if (state.extendedImageLoadState == LoadState.loading) {
|
||||
final ImageChunkEvent? loadingProgress =
|
||||
|
|
|
|||
|
|
@ -12,16 +12,16 @@ import 'package:mangayomi/utils/headers.dart';
|
|||
import 'package:mangayomi/utils/reg_exp_matcher.dart';
|
||||
|
||||
class ImageViewCenter extends ConsumerWidget {
|
||||
final UChapDataPreload datas;
|
||||
final UChapDataPreload data;
|
||||
final bool cropBorders;
|
||||
final Function(UChapDataPreload datas) onLongPressData;
|
||||
final Function(UChapDataPreload data) onLongPressData;
|
||||
final Widget? Function(ExtendedImageState state) loadStateChanged;
|
||||
final Function(ExtendedImageGestureState state)? onDoubleTap;
|
||||
final GestureConfig Function(ExtendedImageState state)?
|
||||
initGestureConfigHandler;
|
||||
const ImageViewCenter({
|
||||
super.key,
|
||||
required this.datas,
|
||||
required this.data,
|
||||
required this.cropBorders,
|
||||
required this.onLongPressData,
|
||||
required this.loadStateChanged,
|
||||
|
|
@ -31,10 +31,10 @@ class ImageViewCenter extends ConsumerWidget {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final cropImageExist = cropBorders && datas.cropImage != null;
|
||||
final cropImageExist = cropBorders && data.cropImage != null;
|
||||
|
||||
return _imageView(cropImageExist ? true : datas.isLocale!,
|
||||
cropImageExist ? datas.cropImage : datas.archiveImage, ref);
|
||||
return _imageView(cropImageExist ? true : data.isLocale!,
|
||||
cropImageExist ? data.cropImage : data.archiveImage, ref);
|
||||
}
|
||||
|
||||
Widget _imageView(bool isLocale, Uint8List? archiveImage, WidgetRef ref) {
|
||||
|
|
@ -43,16 +43,17 @@ class ImageViewCenter extends ConsumerWidget {
|
|||
? archiveImage != null
|
||||
? ExtendedMemoryImageProvider(archiveImage)
|
||||
: ExtendedFileImageProvider(
|
||||
File('${datas.path!.path}${padIndex(datas.index! + 1)}.jpg'))
|
||||
: CustomExtendedNetworkImageProvider(datas.url!.trim().trimLeft().trimRight(),
|
||||
File('${data.directory!.path}${padIndex(data.index! + 1)}.jpg'))
|
||||
: CustomExtendedNetworkImageProvider(
|
||||
data.url!.trim().trimLeft().trimRight(),
|
||||
cache: true,
|
||||
cacheMaxAge: const Duration(days: 7),
|
||||
headers: ref.watch(headersProvider(
|
||||
source: datas.chapter!.manga.value!.source!,
|
||||
lang: datas.chapter!.manga.value!.lang!)));
|
||||
source: data.chapter!.manga.value!.source!,
|
||||
lang: data.chapter!.manga.value!.lang!)));
|
||||
|
||||
return GestureDetector(
|
||||
onLongPress: () => onLongPressData.call(datas),
|
||||
onLongPress: () => onLongPressData.call(data),
|
||||
child: ColorFilterWidget(
|
||||
child: ExtendedImage(
|
||||
image: image as ImageProvider<Object>,
|
||||
|
|
|
|||
|
|
@ -15,25 +15,25 @@ import 'package:mangayomi/utils/reg_exp_matcher.dart';
|
|||
import 'package:mangayomi/modules/manga/reader/widgets/circular_progress_indicator_animate_rotate.dart';
|
||||
|
||||
class ImageViewVertical extends ConsumerWidget {
|
||||
final UChapDataPreload datas;
|
||||
final Function(UChapDataPreload datas) onLongPressData;
|
||||
final UChapDataPreload data;
|
||||
final Function(UChapDataPreload data) onLongPressData;
|
||||
final bool cropBorders;
|
||||
|
||||
final Function(bool) failedToLoadImage;
|
||||
|
||||
const ImageViewVertical(
|
||||
{super.key,
|
||||
required this.datas,
|
||||
required this.data,
|
||||
required this.onLongPressData,
|
||||
required this.cropBorders,
|
||||
required this.failedToLoadImage});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final cropImageExist = cropBorders && datas.cropImage != null;
|
||||
final cropImageExist = cropBorders && data.cropImage != null;
|
||||
|
||||
return _imageView(cropImageExist ? true : datas.isLocale!,
|
||||
cropImageExist ? datas.cropImage : datas.archiveImage, context, ref);
|
||||
return _imageView(cropImageExist ? true : data.isLocale!,
|
||||
cropImageExist ? data.cropImage : data.archiveImage, context, ref);
|
||||
}
|
||||
|
||||
Widget _imageView(bool isLocale, Uint8List? archiveImage,
|
||||
|
|
@ -42,22 +42,23 @@ class ImageViewVertical extends ConsumerWidget {
|
|||
? archiveImage != null
|
||||
? ExtendedMemoryImageProvider(archiveImage)
|
||||
: ExtendedFileImageProvider(
|
||||
File('${datas.path!.path}${padIndex(datas.index! + 1)}.jpg'))
|
||||
: CustomExtendedNetworkImageProvider(datas.url!.trim().trimLeft().trimRight(),
|
||||
File('${data.directory!.path}${padIndex(data.index! + 1)}.jpg'))
|
||||
: CustomExtendedNetworkImageProvider(
|
||||
data.url!.trim().trimLeft().trimRight(),
|
||||
cache: true,
|
||||
cacheMaxAge: const Duration(days: 7),
|
||||
headers: ref.watch(headersProvider(
|
||||
source: datas.chapter!.manga.value!.source!,
|
||||
lang: datas.chapter!.manga.value!.lang!)));
|
||||
source: data.chapter!.manga.value!.source!,
|
||||
lang: data.chapter!.manga.value!.lang!)));
|
||||
final scaleType = ref.watch(scaleTypeStateProvider);
|
||||
final l10n = l10nLocalizations(context)!;
|
||||
return GestureDetector(
|
||||
onLongPress: () => onLongPressData.call(datas),
|
||||
onLongPress: () => onLongPressData.call(data),
|
||||
child: ColorFilterWidget(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
if (datas.index == 0)
|
||||
if (data.index == 0)
|
||||
SizedBox(
|
||||
height: MediaQuery.of(context).padding.top,
|
||||
),
|
||||
|
|
@ -112,7 +113,8 @@ class ImageViewVertical extends ConsumerWidget {
|
|||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: context.primaryColor,
|
||||
borderRadius: BorderRadius.circular(30)),
|
||||
borderRadius:
|
||||
BorderRadius.circular(30)),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 8, horizontal: 16),
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@ int nextId = 0;
|
|||
|
||||
@Riverpod(keepAlive: true)
|
||||
Future<Uint8List?> cropBorders(CropBordersRef ref,
|
||||
{required UChapDataPreload datas, required bool cropBorder}) async {
|
||||
{required UChapDataPreload data, required bool cropBorder}) async {
|
||||
Uint8List? imageBytes;
|
||||
|
||||
if (cropBorder) {
|
||||
imageBytes = await datas.getImageBytes;
|
||||
imageBytes = await data.getImageBytes;
|
||||
|
||||
if (imageBytes == null) {
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'crop_borders_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$cropBordersHash() => r'c08c1fdfcd66915e86c3c6571bde1783703f1142';
|
||||
String _$cropBordersHash() => r'dc0e5abe7adbe8c2980957c82e470a0cd1edc799';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
@ -40,11 +40,11 @@ class CropBordersFamily extends Family<AsyncValue<Uint8List?>> {
|
|||
|
||||
/// See also [cropBorders].
|
||||
CropBordersProvider call({
|
||||
required UChapDataPreload datas,
|
||||
required UChapDataPreload data,
|
||||
required bool cropBorder,
|
||||
}) {
|
||||
return CropBordersProvider(
|
||||
datas: datas,
|
||||
data: data,
|
||||
cropBorder: cropBorder,
|
||||
);
|
||||
}
|
||||
|
|
@ -54,7 +54,7 @@ class CropBordersFamily extends Family<AsyncValue<Uint8List?>> {
|
|||
covariant CropBordersProvider provider,
|
||||
) {
|
||||
return call(
|
||||
datas: provider.datas,
|
||||
data: provider.data,
|
||||
cropBorder: provider.cropBorder,
|
||||
);
|
||||
}
|
||||
|
|
@ -78,12 +78,12 @@ class CropBordersFamily extends Family<AsyncValue<Uint8List?>> {
|
|||
class CropBordersProvider extends FutureProvider<Uint8List?> {
|
||||
/// See also [cropBorders].
|
||||
CropBordersProvider({
|
||||
required UChapDataPreload datas,
|
||||
required UChapDataPreload data,
|
||||
required bool cropBorder,
|
||||
}) : this._internal(
|
||||
(ref) => cropBorders(
|
||||
ref as CropBordersRef,
|
||||
datas: datas,
|
||||
data: data,
|
||||
cropBorder: cropBorder,
|
||||
),
|
||||
from: cropBordersProvider,
|
||||
|
|
@ -95,7 +95,7 @@ class CropBordersProvider extends FutureProvider<Uint8List?> {
|
|||
dependencies: CropBordersFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
CropBordersFamily._allTransitiveDependencies,
|
||||
datas: datas,
|
||||
data: data,
|
||||
cropBorder: cropBorder,
|
||||
);
|
||||
|
||||
|
|
@ -106,11 +106,11 @@ class CropBordersProvider extends FutureProvider<Uint8List?> {
|
|||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.datas,
|
||||
required this.data,
|
||||
required this.cropBorder,
|
||||
}) : super.internal();
|
||||
|
||||
final UChapDataPreload datas;
|
||||
final UChapDataPreload data;
|
||||
final bool cropBorder;
|
||||
|
||||
@override
|
||||
|
|
@ -126,7 +126,7 @@ class CropBordersProvider extends FutureProvider<Uint8List?> {
|
|||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
datas: datas,
|
||||
data: data,
|
||||
cropBorder: cropBorder,
|
||||
),
|
||||
);
|
||||
|
|
@ -140,14 +140,14 @@ class CropBordersProvider extends FutureProvider<Uint8List?> {
|
|||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is CropBordersProvider &&
|
||||
other.datas == datas &&
|
||||
other.data == data &&
|
||||
other.cropBorder == cropBorder;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, datas.hashCode);
|
||||
hash = _SystemHash.combine(hash, data.hashCode);
|
||||
hash = _SystemHash.combine(hash, cropBorder.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
|
|
@ -155,8 +155,8 @@ class CropBordersProvider extends FutureProvider<Uint8List?> {
|
|||
}
|
||||
|
||||
mixin CropBordersRef on FutureProviderRef<Uint8List?> {
|
||||
/// The parameter `datas` of this provider.
|
||||
UChapDataPreload get datas;
|
||||
/// The parameter `data` of this provider.
|
||||
UChapDataPreload get data;
|
||||
|
||||
/// The parameter `cropBorder` of this provider.
|
||||
bool get cropBorder;
|
||||
|
|
@ -167,7 +167,7 @@ class _CropBordersProviderElement extends FutureProviderElement<Uint8List?>
|
|||
_CropBordersProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
UChapDataPreload get datas => (origin as CropBordersProvider).datas;
|
||||
UChapDataPreload get data => (origin as CropBordersProvider).data;
|
||||
@override
|
||||
bool get cropBorder => (origin as CropBordersProvider).cropBorder;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ class _CurrentIndexProviderElement
|
|||
Chapter get chapter => (origin as CurrentIndexProvider).chapter;
|
||||
}
|
||||
|
||||
String _$readerControllerHash() => r'0b60b5d4cafa82d45d1e180969af0b7c982b1f82';
|
||||
String _$readerControllerHash() => r'b334d7b508df43c66ce57f0d2bf7c59ea4bf3ff7';
|
||||
|
||||
abstract class _$ReaderController extends BuildlessAutoDisposeNotifier<void> {
|
||||
late final Chapter chapter;
|
||||
|
|
|
|||
|
|
@ -550,7 +550,7 @@ class _MangaChapterPageGalleryState
|
|||
},
|
||||
)
|
||||
: ImageViewVertical(
|
||||
datas:
|
||||
data:
|
||||
_uChapDataPreload[index],
|
||||
failedToLoadImage: (value) {
|
||||
// _failedToLoadImage.value = value;
|
||||
|
|
@ -634,7 +634,7 @@ class _MangaChapterPageGalleryState
|
|||
itemBuilder:
|
||||
(BuildContext context, int index) {
|
||||
return ImageViewCenter(
|
||||
datas: _uChapDataPreload[index],
|
||||
data: _uChapDataPreload[index],
|
||||
loadStateChanged:
|
||||
(ExtendedImageState state) {
|
||||
if (state.extendedImageLoadState ==
|
||||
|
|
@ -858,7 +858,7 @@ class _MangaChapterPageGalleryState
|
|||
} else {
|
||||
precacheImage(
|
||||
ExtendedFileImageProvider(File(
|
||||
"${_uChapDataPreload[index].path!.path}${padIndex(_uChapDataPreload[index].index! + 1)}.jpg")),
|
||||
"${_uChapDataPreload[index].directory!.path}${padIndex(_uChapDataPreload[index].index! + 1)}.jpg")),
|
||||
context);
|
||||
}
|
||||
}
|
||||
|
|
@ -1255,7 +1255,7 @@ class _MangaChapterPageGalleryState
|
|||
_cropBorderCheckList.add(i);
|
||||
ref
|
||||
.watch(cropBordersProvider(
|
||||
datas: _uChapDataPreload[i], cropBorder: true)
|
||||
data: _uChapDataPreload[i], cropBorder: true)
|
||||
.future)
|
||||
.then((value) {
|
||||
_uChapDataPreload[i] = _uChapDataPreload[i]..cropImage = value;
|
||||
|
|
@ -1272,7 +1272,7 @@ class _MangaChapterPageGalleryState
|
|||
_cropBorderCheckList.add(index);
|
||||
ref
|
||||
.watch(cropBordersProvider(
|
||||
datas: _uChapDataPreload[index], cropBorder: true)
|
||||
data: _uChapDataPreload[index], cropBorder: true)
|
||||
.future)
|
||||
.then((value) {
|
||||
_uChapDataPreload[index] = _uChapDataPreload[index]..cropImage = value;
|
||||
|
|
@ -1285,7 +1285,7 @@ class _MangaChapterPageGalleryState
|
|||
_uChapDataPreload[index].cropImage == null) {
|
||||
ref
|
||||
.watch(cropBordersProvider(
|
||||
datas: _uChapDataPreload[index], cropBorder: true)
|
||||
data: _uChapDataPreload[index], cropBorder: true)
|
||||
.future)
|
||||
.then((value) {
|
||||
_uChapDataPreload[index] = _uChapDataPreload[index]
|
||||
|
|
@ -2275,7 +2275,7 @@ class _MangaChapterPageGalleryState
|
|||
|
||||
class UChapDataPreload {
|
||||
Chapter? chapter;
|
||||
Directory? path;
|
||||
Directory? directory;
|
||||
String? url;
|
||||
bool? isLocale;
|
||||
Uint8List? archiveImage;
|
||||
|
|
@ -2283,7 +2283,7 @@ class UChapDataPreload {
|
|||
GetChapterPagesModel? chapterUrlModel;
|
||||
int? pageIndex;
|
||||
Uint8List? cropImage;
|
||||
UChapDataPreload(this.chapter, this.path, this.url, this.isLocale,
|
||||
UChapDataPreload(this.chapter, this.directory, this.url, this.isLocale,
|
||||
this.archiveImage, this.index, this.chapterUrlModel, this.pageIndex,
|
||||
{this.cropImage});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ part of 'fetch_anime_sources.dart';
|
|||
// **************************************************************************
|
||||
|
||||
String _$fetchAnimeSourcesListHash() =>
|
||||
r'c84ceb974ca48efdaccd9e3fc44ce7aaab42f086';
|
||||
r'd3bd9a4e8842f55c823ba355a8666b6ffedbb590';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ part of 'fetch_manga_sources.dart';
|
|||
// **************************************************************************
|
||||
|
||||
String _$fetchMangaSourcesListHash() =>
|
||||
r'6eee9171e2fc6a27faa6350b074391b8250274b0';
|
||||
r'f32cfd3a729d0659a98a35d06e3df940173bb077';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@ extension UChapDataPreloadExtensions on UChapDataPreload {
|
|||
if (archiveImage != null) {
|
||||
imageBytes = archiveImage;
|
||||
} else if (isLocale!) {
|
||||
imageBytes =
|
||||
File('${path!.path}${padIndex(index! + 1)}.jpg').readAsBytesSync();
|
||||
imageBytes = File('${directory!.path}${padIndex(index! + 1)}.jpg')
|
||||
.readAsBytesSync();
|
||||
} else {
|
||||
File? cachedImage;
|
||||
if (url != null) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue