Files
PiliPlus/lib/common/widgets/gesture/vertical_drag_gesture_recognizer.dart
2026-04-19 14:37:34 +08:00

40 lines
943 B
Dart

import 'package:flutter/gestures.dart'
show VerticalDragGestureRecognizer, PointerEvent, RecognizerCallback;
typedef IsDyAllowed = bool Function(double dy);
class CustomVerticalDragGestureRecognizer
extends VerticalDragGestureRecognizer {
CustomVerticalDragGestureRecognizer({
super.debugOwner,
super.supportedDevices,
super.allowedButtonsFilter,
});
IsDyAllowed? isDyAllowed;
bool _isDyAllowed = true;
@override
bool isPointerAllowed(PointerEvent event) {
_isDyAllowed = isDyAllowed?.call(event.localPosition.dy) ?? true;
return super.isPointerAllowed(event);
}
@override
T? invokeCallback<T>(
String name,
RecognizerCallback<T> callback, {
String Function()? debugReport,
}) {
if (!_isDyAllowed) return null;
return super.invokeCallback(name, callback, debugReport: debugReport);
}
@override
void dispose() {
isDyAllowed = null;
super.dispose();
}
}