fix: 将自动全屏逻辑调整到播放页,避免未开自动播放时无效果

This commit is contained in:
orz12
2024-03-02 15:14:37 +08:00
parent 0d46ebb7a3
commit 77e495ed02
4 changed files with 22 additions and 12 deletions

View File

@@ -1,5 +1,6 @@
import 'dart:io';
import 'package:PiliPalaX/utils/storage.dart';
import 'package:floating/floating.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -34,8 +35,17 @@ class _LiveRoomPageState extends State<LiveRoomPage> {
}
videoSourceInit();
_futureBuilderFuture = _liveRoomController.queryLiveInfo();
autoEnterFullscreen();
}
void autoEnterFullscreen() async {
bool autoEnterFullscreen =
GStrorage.setting.get(SettingBoxKey.enableAutoEnter, defaultValue: false);
if (autoEnterFullscreen) {
await Future.delayed(const Duration(milliseconds: 100));
plPlayerController!.triggerFullScreen(status: true);
}
}
Future<void> videoSourceInit() async {
_futureBuilder = _liveRoomController.queryLiveInfoH5();
plPlayerController = _liveRoomController.plPlayerController;

View File

@@ -239,7 +239,6 @@ class VideoDetailController extends GetxController
bvid: bvid,
cid: cid.value,
enableHeart: enableHeart,
isFirstTime: isFirstTime,
autoplay: autoplay,
);

View File

@@ -102,6 +102,16 @@ class _VideoDetailPageState extends State<VideoDetailPage>
plPlayerController = videoDetailController.plPlayerController;
plPlayerController!.addStatusLister(playerListener);
listenFullScreenStatus();
autoEnterFullscreen();
}
}
void autoEnterFullscreen() async {
bool autoEnterFullscreen =
setting.get(SettingBoxKey.enableAutoEnter, defaultValue: false);
if (autoEnterFullscreen && videoDetailController.isFirstTime) {
await Future.delayed(const Duration(milliseconds: 100));
plPlayerController!.triggerFullScreen(status: true);
}
}
@@ -158,6 +168,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
plPlayerController = videoDetailController.plPlayerController;
plPlayerController!.addStatusLister(playerListener);
listenFullScreenStatus();
autoEnterFullscreen();
videoDetailController.autoPlay.value = true;
videoDetailController.isShowCover.value = false;
}
@@ -195,7 +206,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
});
if (!status) {
showStatusBar();
if (setting.get(SettingBoxKey.horizontalScreen, defaultValue: false)) {
if (horizontalScreen) {
autoScreen();
} else {
verticalScreen();

View File

@@ -97,7 +97,6 @@ class PlPlayerController {
int _cid = 0;
int _heartDuration = 0;
bool _enableHeart = true;
bool _isFirstTime = true;
final RxList<Map<String, String>> _vttSubtitles = <Map<String, String>>[].obs;
final RxInt _vttSubtitlesIndex = 0.obs;
@@ -350,8 +349,6 @@ class PlPlayerController {
int cid = 0,
// 历史记录开关
bool enableHeart = true,
// 是否首次加载
bool isFirstTime = true,
}) async {
try {
_autoPlay = autoplay;
@@ -365,7 +362,6 @@ class PlPlayerController {
_bvid = bvid;
_cid = cid;
_enableHeart = enableHeart;
_isFirstTime = isFirstTime;
if (_videoPlayerController != null &&
_videoPlayerController!.state.playing) {
@@ -408,12 +404,6 @@ class PlPlayerController {
}
});
}
bool autoEnterFullcreen =
setting.get(SettingBoxKey.enableAutoEnter, defaultValue: false);
if (autoEnterFullcreen && _isFirstTime) {
await Future.delayed(const Duration(milliseconds: 100));
triggerFullScreen(status: true);
}
} catch (err) {
dataStatus.status.value = DataStatus.error;
print('plPlayer err: $err');