mangayomi-mirror/lib/modules/manga/reader/image_view_paged.dart
Moustapha Kodjo Amadou 2f0fc85316 feat(reader): add navigation layout options and settings for screen behavior
- Implemented multiple navigation layouts for the reader, including L-shaped, Kindle, Edge, Right & Left, and Disabled modes.
- Added settings for keeping the screen on, showing page gaps, and adjusting webtoon side padding.
- Enhanced the reader settings modal to include new options and improved UI for navigation layout selection.
- Color filters: invert/gray/BCS
2026-03-04 16:04:07 +01:00

50 lines
1.9 KiB
Dart

import 'package:extended_image/extended_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:mangayomi/modules/manga/reader/providers/reader_controller_provider.dart';
import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart';
import 'package:mangayomi/modules/manga/reader/widgets/color_filter_widget.dart';
import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart';
import 'package:mangayomi/utils/extensions/others.dart';
class ImageViewPaged extends ConsumerWidget {
final UChapDataPreload data;
final Function(UChapDataPreload data) onLongPressData;
final Widget? Function(ExtendedImageState state) loadStateChanged;
final Function(ExtendedImageGestureState state)? onDoubleTap;
final GestureConfig Function(ExtendedImageState state)?
initGestureConfigHandler;
const ImageViewPaged({
super.key,
required this.data,
required this.onLongPressData,
required this.loadStateChanged,
this.onDoubleTap,
this.initGestureConfigHandler,
});
@override
Widget build(BuildContext context, WidgetRef ref) {
final scaleType = ref.watch(scaleTypeStateProvider);
final image = data.getImageProvider(ref, true);
final (colorBlendMode, color) = chapterColorFIlterValues(context, ref);
return applyReaderColorFilter(
GestureDetector(
onLongPress: () => onLongPressData.call(data),
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,
),
),
ref,
);
}
}