From a89e1b9ba7b09b948ab638689d54e884fb7189cf Mon Sep 17 00:00:00 2001 From: Moustapha Kodjo Amadou <107993382+kodjodevf@users.noreply.github.com> Date: Wed, 22 Jan 2025 10:47:34 +0100 Subject: [PATCH] refactor: simplify color filter handling in image view --- .../manga/reader/image_view_paged.dart | 23 +++++++------- .../manga/reader/image_view_vertical.dart | 29 ++++++++--------- .../reader/widgets/color_filter_widget.dart | 31 +++++++------------ 3 files changed, 38 insertions(+), 45 deletions(-) diff --git a/lib/modules/manga/reader/image_view_paged.dart b/lib/modules/manga/reader/image_view_paged.dart index 15f0f20..f95f3ff 100644 --- a/lib/modules/manga/reader/image_view_paged.dart +++ b/lib/modules/manga/reader/image_view_paged.dart @@ -27,19 +27,20 @@ class ImageViewPaged extends ConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final scaleType = ref.watch(scaleTypeStateProvider); final image = data.getImageProvider(ref, true); + final (colorBlendMode, color) = chapterColorFIlterValues(context, ref); return GestureDetector( onLongPress: () => onLongPressData.call(data), - child: ColorFilterWidget( - child: ExtendedImage( - image: image, - fit: getBoxFit(scaleType), - filterQuality: FilterQuality.medium, - mode: ExtendedImageMode.gesture, - handleLoadingProgress: true, - loadStateChanged: loadStateChanged, - initGestureConfigHandler: initGestureConfigHandler, - onDoubleTap: onDoubleTap), - ), + child: ExtendedImage( + image: image, + colorBlendMode: colorBlendMode, + color: color, + fit: getBoxFit(scaleType), + filterQuality: FilterQuality.medium, + mode: ExtendedImageMode.gesture, + handleLoadingProgress: true, + loadStateChanged: loadStateChanged, + initGestureConfigHandler: initGestureConfigHandler, + onDoubleTap: onDoubleTap), ); } } diff --git a/lib/modules/manga/reader/image_view_vertical.dart b/lib/modules/manga/reader/image_view_vertical.dart index 6babfdc..a5d92d6 100644 --- a/lib/modules/manga/reader/image_view_vertical.dart +++ b/lib/modules/manga/reader/image_view_vertical.dart @@ -26,7 +26,10 @@ class ImageViewVertical extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final (colorBlendMode, color) = chapterColorFIlterValues(context, ref); final imageWidget = ExtendedImage( + colorBlendMode: colorBlendMode, + color: color, image: data.getImageProvider(ref, true), filterQuality: FilterQuality.medium, handleLoadingProgress: true, @@ -92,20 +95,18 @@ class ImageViewVertical extends ConsumerWidget { }); return GestureDetector( onLongPress: () => onLongPressData.call(data), - child: ColorFilterWidget( - child: isHorizontal - ? imageWidget - : Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - if (data.index == 0) - SizedBox( - height: MediaQuery.of(context).padding.top, - ), - imageWidget - ], - ), - ), + child: isHorizontal + ? imageWidget + : Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (data.index == 0) + SizedBox( + height: MediaQuery.of(context).padding.top, + ), + imageWidget + ], + ), ); } } diff --git a/lib/modules/manga/reader/widgets/color_filter_widget.dart b/lib/modules/manga/reader/widgets/color_filter_widget.dart index 7cd6a3d..6a9b908 100644 --- a/lib/modules/manga/reader/widgets/color_filter_widget.dart +++ b/lib/modules/manga/reader/widgets/color_filter_widget.dart @@ -6,26 +6,17 @@ import 'package:mangayomi/modules/manga/reader/providers/color_filter_provider.d import 'package:mangayomi/modules/more/settings/reader/reader_screen.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; -class ColorFilterWidget extends ConsumerWidget { - final Widget child; - const ColorFilterWidget({super.key, required this.child}); - - @override - Widget build(BuildContext context, WidgetRef ref) { - final customColorFilter = ref.watch(customColorFilterStateProvider); - final colorFilterBlendMode = ref.watch(colorFilterBlendModeStateProvider); - return Container( - foregroundDecoration: BoxDecoration( - backgroundBlendMode: - getColorFilterBlendMode(colorFilterBlendMode, context), - color: customColorFilter == null - ? Colors.transparent - : Color.fromARGB(customColorFilter.a ?? 0, customColorFilter.r ?? 0, - customColorFilter.g ?? 0, customColorFilter.b ?? 0), - ), - child: child, - ); - } +(BlendMode?, Color?) chapterColorFIlterValues( + BuildContext context, WidgetRef ref) { + final customColorFilter = ref.watch(customColorFilterStateProvider); + final colorFilterBlendMode = ref.watch(colorFilterBlendModeStateProvider); + return ( + getColorFilterBlendMode(colorFilterBlendMode, context), + customColorFilter == null + ? Colors.transparent + : Color.fromARGB(customColorFilter.a ?? 0, customColorFilter.r ?? 0, + customColorFilter.g ?? 0, customColorFilter.b ?? 0) + ); } Widget customColorFilterListTile(String label, int value,