feat: 重构选集功能,播放器添加选集,修复连播退全屏、无法保存已看完状态

This commit is contained in:
orz12
2024-04-06 00:06:57 +08:00
parent df461c2375
commit 3776cfee35
15 changed files with 728 additions and 674 deletions

View File

@@ -146,28 +146,30 @@ class _VideoDetailPageState extends State<VideoDetailPage>
void playerListener(PlayerStatus? status) async {
playerStatus = status!;
if (status == PlayerStatus.completed) {
// 结束播放退出全屏
if (autoExitFullcreen) {
plPlayerController!.triggerFullScreen(status: false);
}
shutdownTimerService.handleWaitingFinished();
bool notExitFlag = false;
/// 顺序播放 列表循环
if (plPlayerController!.playRepeat != PlayRepeat.pause &&
plPlayerController!.playRepeat != PlayRepeat.singleCycle) {
if (videoDetailController.videoType == SearchType.video) {
videoIntroController.nextPlay();
notExitFlag = videoIntroController.nextPlay();
}
if (videoDetailController.videoType == SearchType.media_bangumi) {
bangumiIntroController.nextPlay();
notExitFlag = bangumiIntroController.nextPlay();
}
}
/// 单个循环
if (plPlayerController!.playRepeat == PlayRepeat.singleCycle) {
notExitFlag = true;
plPlayerController!.seekTo(Duration.zero);
plPlayerController!.play();
}
// 结束播放退出全屏
if (!notExitFlag && autoExitFullcreen) {
plPlayerController!.triggerFullScreen(status: false);
}
// 播放完展示控制栏
if (videoDetailController.floating != null) {
PiPStatus currentStatus =
@@ -263,6 +265,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
// 离开当前页面时
void didPushNext() async {
_bufferedListener?.cancel();
/// 开启
if (setting.get(SettingBoxKey.enableAutoBrightness, defaultValue: false)
as bool) {
@@ -449,6 +452,19 @@ class _VideoDetailPageState extends State<VideoDetailPage>
: PLVideoPlayer(
controller:
plPlayerController!,
videoIntroController:
videoDetailController
.videoType ==
SearchType.video
? videoIntroController
: null,
bangumiIntroController:
videoDetailController
.videoType ==
SearchType
.media_bangumi
? bangumiIntroController
: null,
headerControl:
videoDetailController
.headerControl,
@@ -702,6 +718,20 @@ class _VideoDetailPageState extends State<VideoDetailPage>
: PLVideoPlayer(
controller:
plPlayerController!,
videoIntroController:
videoDetailController
.videoType ==
SearchType
.video
? videoIntroController
: null,
bangumiIntroController:
videoDetailController
.videoType ==
SearchType
.media_bangumi
? bangumiIntroController
: null,
headerControl:
videoDetailController
.headerControl,
@@ -875,6 +905,14 @@ class _VideoDetailPageState extends State<VideoDetailPage>
? const SizedBox()
: PLVideoPlayer(
controller: plPlayerController!,
videoIntroController:
videoDetailController.videoType == SearchType.video
? videoIntroController
: null,
bangumiIntroController:
videoDetailController.videoType == SearchType.media_bangumi
? bangumiIntroController
: null,
headerControl: HeaderControl(
controller: plPlayerController,
videoDetailCtr: videoDetailController,