mod: 双击快进/快退
This commit is contained in:
@ -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,
|
||||
|
@ -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();
|
||||
|
@ -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';
|
||||
|
Reference in New Issue
Block a user