feat: custom preinit player

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-01-18 21:45:06 +08:00
parent 434a898c36
commit 13b17778ef
4 changed files with 24 additions and 1 deletions

View File

@@ -1887,6 +1887,14 @@ List<SettingsModel> get extraSettings => [
} }
}, },
), ),
SettingsModel(
settingsType: SettingsType.sw1tch,
title: '提前初始化播放器',
subtitle: '相对减少手动播放加载时间',
leading: Icon(Icons.play_circle_outlined),
setKey: SettingBoxKey.preInitPlayer,
defaultVal: false,
),
SettingsModel( SettingsModel(
settingsType: SettingsType.sw1tch, settingsType: SettingsType.sw1tch,
enableFeedback: true, enableFeedback: true,

View File

@@ -225,6 +225,7 @@ class VideoDetailController extends GetxController
bool get showReply => bool get showReply =>
videoType == SearchType.video ? _showVideoReply : _showBangumiReply; videoType == SearchType.video ? _showVideoReply : _showBangumiReply;
late final preInitPlayer = GStorage.preInitPlayer;
late final horizontalSeasonPanel = GStorage.horizontalSeasonPanel; late final horizontalSeasonPanel = GStorage.horizontalSeasonPanel;
int? seasonCid; int? seasonCid;
late RxInt seasonIndex = 0.obs; late RxInt seasonIndex = 0.obs;
@@ -1205,6 +1206,8 @@ class VideoDetailController extends GetxController
if (autoPlay.value) { if (autoPlay.value) {
isShowCover.value = false; isShowCover.value = false;
await playerInit(); await playerInit();
} else if (preInitPlayer) {
await playerInit();
} }
isQuerying = false; isQuerying = false;
return; return;
@@ -1313,6 +1316,8 @@ class VideoDetailController extends GetxController
if (autoPlay.value) { if (autoPlay.value) {
isShowCover.value = false; isShowCover.value = false;
await playerInit(); await playerInit();
} else if (preInitPlayer) {
await playerInit();
} }
} else { } else {
autoPlay.value = false; autoPlay.value = false;

View File

@@ -298,7 +298,11 @@ class _VideoDetailPageState extends State<VideoDetailPage>
plPlayerController = videoDetailController.plPlayerController; plPlayerController = videoDetailController.plPlayerController;
videoDetailController.isShowCover.value = false; videoDetailController.isShowCover.value = false;
videoDetailController.autoPlay.value = true; videoDetailController.autoPlay.value = true;
await videoDetailController.playerInit(autoplay: true); if (videoDetailController.preInitPlayer) {
await plPlayerController!.play();
} else {
await videoDetailController.playerInit(autoplay: true);
}
plPlayerController!.addStatusLister(playerListener); plPlayerController!.addStatusLister(playerListener);
plPlayerController!.addPositionListener(positionListener); plPlayerController!.addPositionListener(positionListener);
await plPlayerController!.autoEnterFullscreen(); await plPlayerController!.autoEnterFullscreen();
@@ -433,6 +437,8 @@ class _VideoDetailPageState extends State<VideoDetailPage>
await videoDetailController.playerInit( await videoDetailController.playerInit(
autoplay: videoDetailController.playerStatus == PlayerStatus.playing, autoplay: videoDetailController.playerStatus == PlayerStatus.playing,
); );
} else if (videoDetailController.preInitPlayer) {
await videoDetailController.playerInit();
} }
// if (videoDetailController.playerStatus == PlayerStatus.playing) { // if (videoDetailController.playerStatus == PlayerStatus.playing) {

View File

@@ -342,6 +342,9 @@ class GStorage {
static int get superResolutionType => static int get superResolutionType =>
GStorage.setting.get(SettingBoxKey.superResolutionType, defaultValue: 0); GStorage.setting.get(SettingBoxKey.superResolutionType, defaultValue: 0);
static bool get preInitPlayer =>
GStorage.setting.get(SettingBoxKey.preInitPlayer, defaultValue: false);
static List<double> get dynamicDetailRatio => List<double>.from(setting static List<double> get dynamicDetailRatio => List<double>.from(setting
.get(SettingBoxKey.dynamicDetailRatio, defaultValue: [60.0, 40.0])); .get(SettingBoxKey.dynamicDetailRatio, defaultValue: [60.0, 40.0]));
@@ -565,6 +568,7 @@ class SettingBoxKey {
showHotRcmd = 'showHotRcmd', showHotRcmd = 'showHotRcmd',
audioNormalization = 'audioNormalization', audioNormalization = 'audioNormalization',
superResolutionType = 'superResolutionType', superResolutionType = 'superResolutionType',
preInitPlayer = 'preInitPlayer',
// Sponsor Block // Sponsor Block
enableSponsorBlock = 'enableSponsorBlock', enableSponsorBlock = 'enableSponsorBlock',