mod: 双击快进/快退

This commit is contained in:
guozhigq
2023-08-30 11:45:28 +08:00
parent b485399517
commit f6c7143d2d
3 changed files with 56 additions and 19 deletions

View File

@ -60,6 +60,18 @@ class _PlaySettingState extends State<PlaySetting> {
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<PlaySetting> {
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,

View File

@ -69,6 +69,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
Box setting = GStrorage.setting;
late FullScreenMode mode;
late int defaultBtmProgressBehavior;
late bool enableQuickDouble;
void onDoubleTapSeekBackward() {
setState(() {
@ -82,6 +83,36 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
});
}
// 双击播放、暂停
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<PLVideoPlayer>
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<PLVideoPlayer>
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();

View File

@ -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';