Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-02-14 18:41:35 +08:00
parent 511ff71f5f
commit 9c7c6f9e4e
6 changed files with 21 additions and 23 deletions

View File

@@ -10,6 +10,11 @@ class CustomHorizontalDragGestureRecognizer
});
Offset? _initialPosition;
Offset? get initialPosition => _initialPosition;
@override
DeviceGestureSettings get gestureSettings => _gestureSettings;
final _gestureSettings = DeviceGestureSettings(touchSlop: touchSlopH);
@override
void addAllowedPointer(PointerDownEvent event) {

View File

@@ -1,18 +1,17 @@
import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart';
import 'package:flutter/gestures.dart';
typedef IsBoundaryAllowed =
bool Function(Offset? initialPosition, OffsetPair lastPosition);
class ImageHorizontalDragGestureRecognizer
extends HorizontalDragGestureRecognizer {
extends CustomHorizontalDragGestureRecognizer {
ImageHorizontalDragGestureRecognizer({
super.debugOwner,
super.supportedDevices,
super.allowedButtonsFilter,
});
Offset? _initialPosition;
IsBoundaryAllowed? isBoundaryAllowed;
int? _pointer;
@@ -26,20 +25,16 @@ class ImageHorizontalDragGestureRecognizer
super.addPointer(event);
}
@override
void addAllowedPointer(PointerDownEvent event) {
super.addAllowedPointer(event);
_initialPosition = event.position;
}
@override
bool hasSufficientGlobalDistanceToAccept(
PointerDeviceKind pointerDeviceKind,
double? deviceTouchSlop,
) {
return globalDistanceMoved.abs() >
computeHitSlop(pointerDeviceKind, gestureSettings) &&
(isBoundaryAllowed?.call(_initialPosition, lastPosition) ?? true);
return super.hasSufficientGlobalDistanceToAccept(
pointerDeviceKind,
deviceTouchSlop,
) &&
(isBoundaryAllowed?.call(initialPosition, lastPosition) ?? true);
}
@override