mod: 全屏手势反向

This commit is contained in:
orz12
2024-02-14 09:42:50 +08:00
parent 186d38190e
commit f7c1aa041a
3 changed files with 20 additions and 8 deletions

View File

@@ -157,6 +157,12 @@ class _PlaySettingState extends State<PlaySetting> {
setKey: SettingBoxKey.enableQuickDouble, setKey: SettingBoxKey.enableQuickDouble,
defaultVal: true, defaultVal: true,
), ),
const SetSwitchItem(
title: '全屏手势反向',
subTitle: '默认播放器中部向上滑动进入全屏,向下退出\n开启后向下全屏,向上退出',
setKey: SettingBoxKey.fullScreenGestureReverse,
defaultVal: false,
),
const SetSwitchItem( const SetSwitchItem(
title: '弹幕开关', title: '弹幕开关',
subTitle: '展示弹幕', subTitle: '展示弹幕',

View File

@@ -72,6 +72,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
late FullScreenMode mode; late FullScreenMode mode;
late int defaultBtmProgressBehavior; late int defaultBtmProgressBehavior;
late bool enableQuickDouble; late bool enableQuickDouble;
late bool fullScreenGestureReverse;
late bool enableBackgroundPlay; late bool enableBackgroundPlay;
// 用于记录上一次全屏切换手势触发时间,避免误触 // 用于记录上一次全屏切换手势触发时间,避免误触
@@ -126,6 +127,8 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
defaultValue: BtmProgresBehavior.values.first.code); defaultValue: BtmProgresBehavior.values.first.code);
enableQuickDouble = enableQuickDouble =
setting.get(SettingBoxKey.enableQuickDouble, defaultValue: true); setting.get(SettingBoxKey.enableQuickDouble, defaultValue: true);
fullScreenGestureReverse = setting.get(SettingBoxKey.fullScreenGestureReverse,
defaultValue: false);
enableBackgroundPlay = enableBackgroundPlay =
setting.get(SettingBoxKey.enableBackgroundPlay, defaultValue: false); setting.get(SettingBoxKey.enableBackgroundPlay, defaultValue: false);
Future.microtask(() async { Future.microtask(() async {
@@ -522,18 +525,20 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
// 全屏 // 全屏
final double dy = details.delta.dy; final double dy = details.delta.dy;
const double threshold = 7.0; // 滑动阈值 const double threshold = 7.0; // 滑动阈值
void fullScreenTrigger(bool status) async {
lastFullScreenToggleTime = DateTime.now();
await widget.controller.triggerFullScreen(status: status);
}
if (dy > _distance && dy > threshold) { if (dy > _distance && dy > threshold) {
if (_.isFullScreen.value) { // 下滑退出全屏/进入全屏
lastFullScreenToggleTime = DateTime.now(); if (_.isFullScreen.value ^ fullScreenGestureReverse) {
// 下滑退出全屏 fullScreenTrigger(fullScreenGestureReverse);
await widget.controller.triggerFullScreen(status: false);
} }
_distance = 0.0; _distance = 0.0;
} else if (dy < _distance && dy < -threshold) { } else if (dy < _distance && dy < -threshold) {
if (!_.isFullScreen.value) { // 上划进入全屏/退出全屏
lastFullScreenToggleTime = DateTime.now(); if (!_.isFullScreen.value ^ fullScreenGestureReverse) {
// 上滑进入全屏 fullScreenTrigger(!fullScreenGestureReverse);
await widget.controller.triggerFullScreen();
} }
_distance = 0.0; _distance = 0.0;
} }

View File

@@ -97,6 +97,7 @@ class SettingBoxKey {
// youtube 双击快进快退 // youtube 双击快进快退
enableQuickDouble = 'enableQuickDouble', enableQuickDouble = 'enableQuickDouble',
fullScreenGestureReverse = 'fullScreenGestureReverse',
enableShowDanmaku = 'enableShowDanmaku', enableShowDanmaku = 'enableShowDanmaku',
enableBackgroundPlay = 'enableBackgroundPlay', enableBackgroundPlay = 'enableBackgroundPlay',