diff --git a/lib/pages/setting/play_setting.dart b/lib/pages/setting/play_setting.dart index 6d74c5b3..f093a740 100644 --- a/lib/pages/setting/play_setting.dart +++ b/lib/pages/setting/play_setting.dart @@ -60,6 +60,18 @@ class _PlaySettingState extends State { setKey: SettingBoxKey.autoPlayEnable, defaultVal: true, ), + const SetSwitchItem( + title: '自动全屏', + subTitle: '视频开始播放时进入全屏', + setKey: SettingBoxKey.enableAutoEnter, + defaultVal: false, + ), + const SetSwitchItem( + title: '自动退出', + subTitle: '视频结束播放时退出全屏', + setKey: SettingBoxKey.enableAutoExit, + defaultVal: false, + ), const SetSwitchItem( title: '开启硬解', subTitle: '以较低功耗播放视频', @@ -79,16 +91,10 @@ class _PlaySettingState extends State { defaultVal: false, ), const SetSwitchItem( - title: '自动全屏', - subTitle: '视频开始播放时进入全屏', - setKey: SettingBoxKey.enableAutoEnter, - defaultVal: false, - ), - const SetSwitchItem( - title: '自动退出', - subTitle: '视频结束播放时退出全屏', - setKey: SettingBoxKey.enableAutoExit, - defaultVal: false, + title: '双击快退/快进', + subTitle: '左侧双击快退,右侧双击快进', + setKey: SettingBoxKey.enableQuickDouble, + defaultVal: true, ), ListTile( dense: false, diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index e6ba2e05..35a277b4 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -69,6 +69,7 @@ class _PLVideoPlayerState extends State Box setting = GStrorage.setting; late FullScreenMode mode; late int defaultBtmProgressBehavior; + late bool enableQuickDouble; void onDoubleTapSeekBackward() { setState(() { @@ -82,6 +83,36 @@ class _PLVideoPlayerState extends State }); } + // 双击播放、暂停 + void onDoubleTapCenter() { + final _ = widget.controller; + if (_.playerStatus.status.value == PlayerStatus.playing) { + _.togglePlay(); + } else { + _.play(); + } + } + + doubleTapFuc(String type) { + if (!enableQuickDouble) { + onDoubleTapCenter(); + return; + } + switch (type) { + case 'left': + // 双击左边区域 👈 + onDoubleTapSeekBackward(); + break; + case 'center': + onDoubleTapCenter(); + break; + case 'right': + // 双击右边区域 👈 + onDoubleTapSeekForward(); + break; + } + } + @override void initState() { super.initState(); @@ -91,6 +122,8 @@ class _PLVideoPlayerState extends State widget.controller.headerControl = widget.headerControl; defaultBtmProgressBehavior = setting.get(SettingBoxKey.btmProgressBehavior, defaultValue: BtmProgresBehavior.values.first.code); + enableQuickDouble = + setting.get(SettingBoxKey.enableQuickDouble, defaultValue: true); Future.microtask(() async { try { @@ -429,19 +462,15 @@ class _PLVideoPlayerState extends State final totalWidth = MediaQuery.of(context).size.width; final tapPosition = details.localPosition.dx; final sectionWidth = totalWidth / 3; + String type = 'left'; if (tapPosition < sectionWidth) { - // 双击左边区域 👈 - onDoubleTapSeekBackward(); + type = 'left'; } else if (tapPosition < sectionWidth * 2) { - if (_.playerStatus.status.value == PlayerStatus.playing) { - _.togglePlay(); - } else { - _.play(); - } + type = 'center'; } else { - // 双击右边区域 👈 - onDoubleTapSeekForward(); + type = 'right'; } + doubleTapFuc(type); }, onLongPressStart: (detail) { feedBack(); diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index 8c3b981c..de7ffd04 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -99,6 +99,8 @@ class SettingBoxKey { static const String enableAutoBrightness = 'enableAutoBrightness'; static const String enableAutoEnter = 'enableAutoEnter'; static const String enableAutoExit = 'enableAutoExit'; + // youtube 双击快进快退 + static const String enableQuickDouble = 'enableQuickDouble'; /// 隐私 static const String blackMidsList = 'blackMidsList';