diff --git a/lib/pages/setting/play_setting.dart b/lib/pages/setting/play_setting.dart index bfd5db5fc..768f576c5 100644 --- a/lib/pages/setting/play_setting.dart +++ b/lib/pages/setting/play_setting.dart @@ -116,6 +116,12 @@ class _PlaySettingState extends State { setKey: SettingBoxKey.enableAutoExit, defaultVal: false, ), + const SetSwitchItem( + title: '恢复竖屏', + subTitle: '退出全屏视频时自动恢复竖屏,关闭可以保持横屏状态', + setKey: SettingBoxKey.exitFullscreenAutoVertical, + defaultVal: true, + ), const SetSwitchItem( title: '开启硬解', subTitle: '以较低功耗播放视频', diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index 3644fa41d..320a3c8a4 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -57,6 +57,7 @@ class _VideoDetailPageState extends State // 自动退出全屏 late bool autoExitFullcreen; late bool autoPlayEnable; + late bool exitFullscreenAutoVertical; late bool autoPiP; final Floating floating = Floating(); // 生命周期监听 @@ -85,6 +86,8 @@ class _VideoDetailPageState extends State statusBarHeight = localCache.get('statusBarHeight'); autoExitFullcreen = setting.get(SettingBoxKey.enableAutoExit, defaultValue: false); + exitFullscreenAutoVertical = setting + .get(SettingBoxKey.exitFullscreenAutoVertical, defaultValue: true); autoPlayEnable = setting.get(SettingBoxKey.autoPlayEnable, defaultValue: true); autoPiP = setting.get(SettingBoxKey.autoPiP, defaultValue: false); @@ -345,7 +348,8 @@ class _VideoDetailPageState extends State .triggerFullScreen(status: false); } if (MediaQuery.of(context).orientation == - Orientation.landscape) { + Orientation.landscape && + exitFullscreenAutoVertical) { verticalScreen(); } }, diff --git a/lib/pages/video/detail/widgets/header_control.dart b/lib/pages/video/detail/widgets/header_control.dart index 80643245a..8c06d4154 100644 --- a/lib/pages/video/detail/widgets/header_control.dart +++ b/lib/pages/video/detail/widgets/header_control.dart @@ -1069,7 +1069,9 @@ class _HeaderControlState extends State { else { if (MediaQuery.of(context).orientation == - Orientation.landscape) + Orientation.landscape && + setting.get(SettingBoxKey.exitFullscreenAutoVertical, + defaultValue: true)) { SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 6a1735b53..e4ab60547 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -995,7 +995,9 @@ class PlPlayerController { StatusBarControl.setHidden(false, animation: StatusBarAnimation.FADE); // Get.back(); exitFullScreen(); - await verticalScreen(); + if (setting.get(SettingBoxKey.exitFullscreenAutoVertical, defaultValue: true)) { + await verticalScreen(); + } toggleFullScreen(false); } } diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index fb9bc180d..5fbe988be 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -107,6 +107,7 @@ class SettingBoxKey { enableAutoBrightness = 'enableAutoBrightness', enableAutoEnter = 'enableAutoEnter', enableAutoExit = 'enableAutoExit', + exitFullscreenAutoVertical = 'exitFullscreenAutoVertical', p1080 = 'p1080', enableCDN = 'enableCDN', autoPiP = 'autoPiP',