feat: 新增未播放的初始态;黑屏后仍可随播放状态显示出播放器

This commit is contained in:
orz12
2024-07-12 23:24:21 +08:00
parent efad4a19f5
commit 7b5e695a7b
2 changed files with 12 additions and 7 deletions

View File

@@ -46,7 +46,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
late BangumiIntroController bangumiIntroController; late BangumiIntroController bangumiIntroController;
late String heroTag; late String heroTag;
PlayerStatus playerStatus = PlayerStatus.playing; Rx<PlayerStatus> playerStatus = PlayerStatus.none.obs;
double doubleOffset = 0; double doubleOffset = 0;
final Box<dynamic> localCache = GStorage.localCache; final Box<dynamic> localCache = GStorage.localCache;
@@ -157,7 +157,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
// 播放器状态监听 // 播放器状态监听
void playerListener(PlayerStatus? status) async { void playerListener(PlayerStatus? status) async {
playerStatus = status!; playerStatus.value = status!;
if (status == PlayerStatus.completed) { if (status == PlayerStatus.completed) {
shutdownTimerService.handleWaitingFinished(); shutdownTimerService.handleWaitingFinished();
bool notExitFlag = false; bool notExitFlag = false;
@@ -387,12 +387,13 @@ class _VideoDetailPageState extends State<VideoDetailPage>
Widget plPlayer = FutureBuilder( Widget plPlayer = FutureBuilder(
future: _futureBuilderFuture, future: _futureBuilderFuture,
builder: (BuildContext context, AsyncSnapshot snapshot) { builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData && snapshot.data['status']) { if (snapshot.connectionState == ConnectionState.done) {
return Obx( return Obx(
() => !videoDetailController.autoPlay.value || () => !videoDetailController.autoPlay.value ||
plPlayerController == null || plPlayerController == null ||
plPlayerController!.videoController == null plPlayerController!.videoController == null ||
? nil playerStatus.value == PlayerStatus.none
? Text(playerStatus.value.toString())
: PLVideoPlayer( : PLVideoPlayer(
controller: plPlayerController!, controller: plPlayerController!,
videoIntroController: videoIntroController:

View File

@@ -1,9 +1,13 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
enum PlayerStatus { completed, playing, paused } enum PlayerStatus { completed, playing, paused, none }
class PlPlayerStatus { class PlPlayerStatus {
Rx<PlayerStatus> status = Rx(PlayerStatus.paused); Rx<PlayerStatus> status = Rx(PlayerStatus.none);
bool get none {
return status.value == PlayerStatus.none;
}
bool get playing { bool get playing {
return status.value == PlayerStatus.playing; return status.value == PlayerStatus.playing;