* opt: dataStatus

* tweaks

* opt: ui

* update

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
This commit is contained in:
My-Responsitories
2026-02-06 14:25:45 +08:00
committed by GitHub
parent 32386bf146
commit 7ab2cf973f
12 changed files with 85 additions and 73 deletions

View File

@@ -76,7 +76,7 @@ class PlPlayerController {
final playerStatus = PlPlayerStatus(PlayerStatus.playing);
///
final PlPlayerDataStatus dataStatus = PlPlayerDataStatus();
final Rx<DataStatus> dataStatus = Rx(DataStatus.none);
// bool controlsEnabled = false;
@@ -635,7 +635,7 @@ class PlPlayerController {
// 初始化视频倍速
// _playbackSpeed.value = speed;
// 初始化数据加载状态
dataStatus.status.value = DataStatus.loading;
dataStatus.value = DataStatus.loading;
// 初始化全屏方向
_isVertical = isVertical ?? false;
_aid = aid;
@@ -673,14 +673,14 @@ class PlPlayerController {
updateSliderPositionSecond();
updateBufferedSecond();
// 数据加载完成
dataStatus.status.value = DataStatus.loaded;
dataStatus.value = DataStatus.loaded;
// listen the video player events
startListeners();
await _initializePlayer();
onInit?.call();
} catch (err, stackTrace) {
dataStatus.status.value = DataStatus.error;
dataStatus.value = DataStatus.error;
if (kDebugMode) {
debugPrint(stackTrace.toString());
debugPrint('plPlayer err: $err');
@@ -984,9 +984,9 @@ class PlPlayerController {
Future<void>? autoEnterFullscreen() {
if (enableAutoEnter) {
return Future.delayed(const Duration(milliseconds: 500), () {
if (dataStatus.status.value != DataStatus.loaded) {
if (!dataStatus.loaded) {
_stopListenerForEnterFullScreen();
_dataListenerForEnterFullScreen = dataStatus.status.listen((status) {
_dataListenerForEnterFullScreen = dataStatus.listen((status) {
if (status == DataStatus.loaded) {
_stopListenerForEnterFullScreen();
triggerFullScreen(status: true);
@@ -1386,7 +1386,7 @@ class PlPlayerController {
if (buffered.value == Duration.zero) {
attr = VideoFitType.contain;
_stopListenerForVideoFit();
_dataListenerForVideoFit = dataStatus.status.listen((status) {
_dataListenerForVideoFit = dataStatus.listen((status) {
if (status == DataStatus.loaded) {
_stopListenerForVideoFit();
final attr = VideoFitType.values[fitValue];
@@ -1731,7 +1731,7 @@ class PlPlayerController {
// _controlsLock.close();
// playerStatus.close();
// dataStatus.status.close();
// dataStatus.close();
if (PlatformUtils.isDesktop && isAlwaysOnTop.value) {
windowManager.setAlwaysOnTop(false);

View File

@@ -2,11 +2,9 @@ import 'package:get/get.dart';
enum DataStatus { none, loading, loaded, error }
class PlPlayerDataStatus {
Rx<DataStatus> status = Rx(DataStatus.none);
bool get none => status.value == DataStatus.none;
bool get loading => status.value == DataStatus.loading;
bool get loaded => status.value == DataStatus.loaded;
bool get error => status.value == DataStatus.error;
extension PlPlayerDataStatus on Rx<DataStatus> {
bool get none => value == DataStatus.none;
bool get loading => value == DataStatus.loading;
bool get loaded => value == DataStatus.loaded;
bool get error => value == DataStatus.error;
}

View File

@@ -36,6 +36,7 @@ import 'package:PiliPlus/pages/video/widgets/header_control.dart';
import 'package:PiliPlus/plugin/pl_player/controller.dart';
import 'package:PiliPlus/plugin/pl_player/models/bottom_control_type.dart';
import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart';
import 'package:PiliPlus/plugin/pl_player/models/data_status.dart';
import 'package:PiliPlus/plugin/pl_player/models/double_tap_type.dart';
import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart';
import 'package:PiliPlus/plugin/pl_player/models/gesture_type.dart';