opt gesture

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-01-24 16:17:09 +08:00
parent bd158619a4
commit 68872f7b14
3 changed files with 25 additions and 16 deletions

View File

@@ -22,31 +22,40 @@ class CustomHorizontalDragGestureRecognizer
PointerDeviceKind pointerDeviceKind, PointerDeviceKind pointerDeviceKind,
double? deviceTouchSlop, double? deviceTouchSlop,
) { ) {
return globalDistanceMoved.abs() > _computeHitSlop(pointerDeviceKind) && return _computeHitSlop(
_cacl(_initialPosition!, lastPosition.global, gestureSettings); globalDistanceMoved.abs(),
} gestureSettings,
pointerDeviceKind,
static bool _cacl( _initialPosition!,
Offset initialPosition, lastPosition.global,
Offset lastPosition, );
DeviceGestureSettings? gestureSettings,
) {
final offset = lastPosition - initialPosition;
return offset.dx.abs() > offset.dy.abs() * 3;
} }
} }
double touchSlopH = Pref.touchSlopH; double touchSlopH = Pref.touchSlopH;
double _computeHitSlop(PointerDeviceKind kind) { bool _computeHitSlop(
double globalDistanceMoved,
DeviceGestureSettings? settings,
PointerDeviceKind kind,
Offset initialPosition,
Offset lastPosition,
) {
switch (kind) { switch (kind) {
case PointerDeviceKind.mouse: case PointerDeviceKind.mouse:
return kPrecisePointerHitSlop; return globalDistanceMoved > kPrecisePointerHitSlop;
case PointerDeviceKind.stylus: case PointerDeviceKind.stylus:
case PointerDeviceKind.invertedStylus: case PointerDeviceKind.invertedStylus:
case PointerDeviceKind.unknown: case PointerDeviceKind.unknown:
case PointerDeviceKind.touch: case PointerDeviceKind.touch:
return globalDistanceMoved > touchSlopH &&
_cacl(initialPosition, lastPosition);
case PointerDeviceKind.trackpad: case PointerDeviceKind.trackpad:
return touchSlopH; return globalDistanceMoved > (settings?.touchSlop ?? kTouchSlop);
} }
} }
bool _cacl(Offset initialPosition, Offset lastPosition) {
final offset = lastPosition - initialPosition;
return offset.dx.abs() > offset.dy.abs() * 3;
}

View File

@@ -127,7 +127,7 @@ class _HistoryPageState extends State<HistoryPage>
], ],
), ),
Expanded( Expanded(
child: TabBarView( child: TabBarView<CustomHorizontalDragGestureRecognizer>(
physics: enableMultiSelect physics: enableMultiSelect
? const NeverScrollableScrollPhysics() ? const NeverScrollableScrollPhysics()
: const CustomTabBarViewScrollPhysics(), : const CustomTabBarViewScrollPhysics(),

View File

@@ -134,7 +134,7 @@ class _LaterPageState extends State<LaterPage>
}, },
), ),
Expanded( Expanded(
child: TabBarView( child: TabBarView<CustomHorizontalDragGestureRecognizer>(
physics: enableMultiSelect physics: enableMultiSelect
? const NeverScrollableScrollPhysics() ? const NeverScrollableScrollPhysics()
: const CustomTabBarViewScrollPhysics(), : const CustomTabBarViewScrollPhysics(),