mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-16 06:03:54 +08:00
improve horizontal touch slop
Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import 'package:PiliPlus/utils/storage_pref.dart';
|
||||
import 'package:flutter/foundation.dart' show PlatformDispatcher;
|
||||
import 'package:flutter/gestures.dart';
|
||||
|
||||
mixin InitialPositionMixin on GestureRecognizer {
|
||||
@@ -50,20 +51,30 @@ bool _computeHitSlop(
|
||||
Offset lastPosition,
|
||||
) {
|
||||
switch (kind) {
|
||||
case PointerDeviceKind.mouse:
|
||||
case .mouse:
|
||||
return globalDistanceMoved > kPrecisePointerHitSlop;
|
||||
case PointerDeviceKind.stylus:
|
||||
case PointerDeviceKind.invertedStylus:
|
||||
case PointerDeviceKind.unknown:
|
||||
case PointerDeviceKind.touch:
|
||||
case .stylus:
|
||||
case .invertedStylus:
|
||||
case .unknown:
|
||||
case .touch:
|
||||
return globalDistanceMoved > settings.touchSlop! &&
|
||||
_calc(initialPosition!, lastPosition);
|
||||
case PointerDeviceKind.trackpad:
|
||||
_calcAngle(initialPosition!, lastPosition);
|
||||
case .trackpad:
|
||||
return globalDistanceMoved > settings.touchSlop!;
|
||||
}
|
||||
}
|
||||
|
||||
bool _calc(Offset initialPosition, Offset lastPosition) {
|
||||
bool _calcAngle(Offset initialPosition, Offset lastPosition) {
|
||||
final offset = lastPosition - initialPosition;
|
||||
return offset.dx.abs() > offset.dy.abs() * 3;
|
||||
}
|
||||
|
||||
final deviceTouchSlop = _calcDeviceTouchSlop();
|
||||
|
||||
double _calcDeviceTouchSlop() {
|
||||
final view = PlatformDispatcher.instance.views.first;
|
||||
final physicalTouchSlop = view.gestureSettings.physicalTouchSlop;
|
||||
return physicalTouchSlop == null
|
||||
? kTouchSlop
|
||||
: physicalTouchSlop / view.devicePixelRatio;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'dart:io';
|
||||
import 'package:PiliPlus/common/widgets/custom_icon.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart';
|
||||
import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart'
|
||||
show touchSlopH;
|
||||
show deviceTouchSlop, touchSlopH;
|
||||
import 'package:PiliPlus/common/widgets/image_grid/image_grid_view.dart'
|
||||
show ImageGridView;
|
||||
import 'package:PiliPlus/http/fav.dart';
|
||||
@@ -94,7 +94,7 @@ List<SettingsModel> get extraSettings => [
|
||||
),
|
||||
NormalModel(
|
||||
title: '横向滑动阈值',
|
||||
getSubtitle: () => '当前:「${Pref.touchSlopH}」',
|
||||
getSubtitle: () => '当前:「${Pref.touchSlopH}」,系统默认值: $deviceTouchSlop',
|
||||
onTap: _showTouchSlopDialog,
|
||||
leading: const Icon(Icons.pan_tool_alt_outlined),
|
||||
),
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'dart:io';
|
||||
import 'dart:math' show pow, sqrt;
|
||||
|
||||
import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart'
|
||||
show deviceTouchSlop;
|
||||
import 'package:PiliPlus/common/widgets/pair.dart';
|
||||
import 'package:PiliPlus/http/constants.dart';
|
||||
import 'package:PiliPlus/models/common/dynamic/dynamic_badge_mode.dart';
|
||||
@@ -509,8 +511,10 @@ abstract final class Pref {
|
||||
static bool get enableImgMenu =>
|
||||
_setting.get(SettingBoxKey.enableImgMenu, defaultValue: false);
|
||||
|
||||
static double get touchSlopH =>
|
||||
_setting.get(SettingBoxKey.touchSlopH, defaultValue: 24.0);
|
||||
static double get touchSlopH => _setting.get(
|
||||
SettingBoxKey.touchSlopH,
|
||||
defaultValue: deviceTouchSlop + 6.0,
|
||||
);
|
||||
|
||||
static bool get floatingNavBar =>
|
||||
_setting.get(SettingBoxKey.floatingNavBar, defaultValue: false);
|
||||
|
||||
Reference in New Issue
Block a user