From 3209ecd0ba2d5995085eda85d655905fec392be9 Mon Sep 17 00:00:00 2001 From: dom Date: Sun, 15 Feb 2026 22:16:43 +0800 Subject: [PATCH] opt image recognizer Signed-off-by: dom --- ...ge_horizontal_drag_gesture_recognizer.dart | 16 ++----- .../gesture/image_tap_gesture_recognizer.dart | 47 +++++++++---------- 2 files changed, 26 insertions(+), 37 deletions(-) diff --git a/lib/common/widgets/gesture/image_horizontal_drag_gesture_recognizer.dart b/lib/common/widgets/gesture/image_horizontal_drag_gesture_recognizer.dart index 5b1a6a3fa..783d40a70 100644 --- a/lib/common/widgets/gesture/image_horizontal_drag_gesture_recognizer.dart +++ b/lib/common/widgets/gesture/image_horizontal_drag_gesture_recognizer.dart @@ -1,11 +1,14 @@ import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart'; +import 'package:PiliPlus/common/widgets/gesture/image_tap_gesture_recognizer.dart' + show ImageGestureRecognizerMixin; import 'package:flutter/gestures.dart'; typedef IsBoundaryAllowed = bool Function(Offset? initialPosition, OffsetPair lastPosition); class ImageHorizontalDragGestureRecognizer - extends CustomHorizontalDragGestureRecognizer { + extends CustomHorizontalDragGestureRecognizer + with ImageGestureRecognizerMixin { ImageHorizontalDragGestureRecognizer({ super.debugOwner, super.supportedDevices, @@ -14,17 +17,6 @@ class ImageHorizontalDragGestureRecognizer IsBoundaryAllowed? isBoundaryAllowed; - int? _pointer; - - @override - void addPointer(PointerDownEvent event) { - if (_pointer == event.pointer) { - return; - } - _pointer = event.pointer; - super.addPointer(event); - } - @override bool hasSufficientGlobalDistanceToAccept( PointerDeviceKind pointerDeviceKind, diff --git a/lib/common/widgets/gesture/image_tap_gesture_recognizer.dart b/lib/common/widgets/gesture/image_tap_gesture_recognizer.dart index fa408a37a..76fd287c4 100644 --- a/lib/common/widgets/gesture/image_tap_gesture_recognizer.dart +++ b/lib/common/widgets/gesture/image_tap_gesture_recognizer.dart @@ -1,7 +1,25 @@ import 'package:flutter/gestures.dart' - show TapGestureRecognizer, PointerDownEvent, DoubleTapGestureRecognizer; + show + GestureRecognizer, + TapGestureRecognizer, + DoubleTapGestureRecognizer, + PointerDownEvent; -class ImageTapGestureRecognizer extends TapGestureRecognizer { +mixin ImageGestureRecognizerMixin on GestureRecognizer { + int? _pointer; + + @override + void addPointer(PointerDownEvent event) { + if (_pointer == event.pointer) { + return; + } + _pointer = event.pointer; + super.addPointer(event); + } +} + +class ImageTapGestureRecognizer extends TapGestureRecognizer + with ImageGestureRecognizerMixin { ImageTapGestureRecognizer({ super.debugOwner, super.supportedDevices, @@ -9,34 +27,13 @@ class ImageTapGestureRecognizer extends TapGestureRecognizer { super.preAcceptSlopTolerance, super.postAcceptSlopTolerance, }); - - int? _pointer; - - @override - void addPointer(PointerDownEvent event) { - if (_pointer == event.pointer) { - return; - } - _pointer = event.pointer; - super.addPointer(event); - } } -class ImageDoubleTapGestureRecognizer extends DoubleTapGestureRecognizer { +class ImageDoubleTapGestureRecognizer extends DoubleTapGestureRecognizer + with ImageGestureRecognizerMixin { ImageDoubleTapGestureRecognizer({ super.debugOwner, super.supportedDevices, super.allowedButtonsFilter, }); - - int? _pointer; - - @override - void addPointer(PointerDownEvent event) { - if (_pointer == event.pointer) { - return; - } - _pointer = event.pointer; - super.addPointer(event); - } }