diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index 2314c4509..a81c3f6b9 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -565,10 +565,14 @@ class _VideoDetailPageVState extends State WidgetsBinding.instance.addPostFrameCallback((_) { plPlayerController!.triggerFullScreen( status: true, + isManualFS: false, mode: FullScreenMode.gravity, ); }); - } else if (isPortrait && isFullScreen) { + } else if (isPortrait && + isFullScreen && + plPlayerController?.isManualFS == false && + plPlayerController?.controlsLock.value == false) { WidgetsBinding.instance.addPostFrameCallback((_) { plPlayerController!.triggerFullScreen(status: false); }); diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index c12de204e..bce6da4eb 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -1518,6 +1518,7 @@ class PlPlayerController { updateSubtitleStyle(); } + late bool isManualFS = true; late final FullScreenMode mode = FullScreenMode.values[Pref.fullScreenMode]; late final horizontalScreen = Pref.horizontalScreen; @@ -1526,6 +1527,7 @@ class PlPlayerController { Future triggerFullScreen({ bool status = true, bool inAppFullScreen = false, + bool isManualFS = true, FullScreenMode? mode, }) async { if (isFullScreen.value == status) return; @@ -1535,9 +1537,10 @@ class PlPlayerController { } fsProcessing = true; + mode ??= this.mode; + this.isManualFS = isManualFS; toggleFullScreen(status); - mode ??= this.mode; if (status) { if (Utils.isMobile) { hideStatusBar();