diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart index 5b80171b2..1f1e09ba3 100644 --- a/lib/pages/live_room/view.dart +++ b/lib/pages/live_room/view.dart @@ -161,7 +161,7 @@ class _LiveRoomPageState extends State if (isFullScreen && Platform.isIOS) { WidgetsBinding.instance.addPostFrameCallback((_) { if (!_liveRoomController.isPortrait.value) { - landScape(); + landscape(); } }); } diff --git a/lib/pages/login/view.dart b/lib/pages/login/view.dart index 607646932..c922dd046 100644 --- a/lib/pages/login/view.dart +++ b/lib/pages/login/view.dart @@ -7,6 +7,7 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/login/controller.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/image_utils.dart'; +import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -76,8 +77,8 @@ class _LoginPageState extends State { ), if (isMobile) TextButton.icon( - onPressed: () => launchUrl( - Uri.parse(_loginPageCtr.codeInfo.value.data.url), + onPressed: () => PageUtils.launchURL( + _loginPageCtr.codeInfo.value.data.url, mode: LaunchMode.externalNonBrowserApplication, ), icon: const Icon(Icons.open_in_browser_outlined), diff --git a/lib/pages/setting/models/play_settings.dart b/lib/pages/setting/models/play_settings.dart index 28cac8a5d..15638553f 100644 --- a/lib/pages/setting/models/play_settings.dart +++ b/lib/pages/setting/models/play_settings.dart @@ -309,13 +309,4 @@ List get playSettings => [ setKey: SettingBoxKey.tempPlayerConf, defaultVal: false, ), - if (Utils.isDesktop) - const SettingsModel( - settingsType: SettingsType.sw1tch, - title: '独占全屏', - subtitle: '关闭为应用内全屏', - leading: Icon(Icons.zoom_out_map_rounded), - setKey: SettingBoxKey.nativeFullscreen, - defaultVal: true, - ), ]; diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index e62b9ae62..8034e4ee3 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -189,7 +189,7 @@ class _VideoDetailPageVState extends State (mode == FullScreenMode.auto && isVertical) || (mode == FullScreenMode.ratio && (isVertical || maxHeight / maxWidth < 1.25)))) { - landScape(); + landscape(); } }); } diff --git a/lib/pages/video/widgets/player_focus.dart b/lib/pages/video/widgets/player_focus.dart index 86ee5322a..7e942f934 100644 --- a/lib/pages/video/widgets/player_focus.dart +++ b/lib/pages/video/widgets/player_focus.dart @@ -153,7 +153,10 @@ class PlayerFocus extends StatelessWidget { return true; case LogicalKeyboardKey.keyF: - plPlayerController.triggerFullScreen(status: !isFullScreen); + plPlayerController.triggerFullScreen( + status: !isFullScreen, + inAppFullScreen: HardwareKeyboard.instance.isShiftPressed, + ); return true; case LogicalKeyboardKey.escape: diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 4d9bc041a..689267b2d 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -1463,7 +1463,10 @@ class PlPlayerController { // 全屏 bool fsProcessing = false; - Future triggerFullScreen({bool status = true}) async { + Future triggerFullScreen({ + bool status = true, + bool inAppFullScreen = false, + }) async { if (fsProcessing) { return; } @@ -1493,10 +1496,10 @@ class PlPlayerController { (isVertical || size.height / size.width < 1.25)))) { await verticalScreenForTwoSeconds(); } else { - await landScape(); + await landscape(inAppFullScreen: inAppFullScreen); } } else if (isFullScreen.value && !status) { - showStatusBar(); + showStatusBar(inAppFullScreen: inAppFullScreen); toggleFullScreen(false); if (mode == FullScreenMode.none) { fsProcessing = false; diff --git a/lib/plugin/pl_player/utils/fullscreen.dart b/lib/plugin/pl_player/utils/fullscreen.dart index cbe4627aa..bc9e1f897 100644 --- a/lib/plugin/pl_player/utils/fullscreen.dart +++ b/lib/plugin/pl_player/utils/fullscreen.dart @@ -8,14 +8,14 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; //横屏 -Future landScape() async { +Future landscape({bool inAppFullScreen = false}) async { dynamic document; try { if (kIsWeb) { await document.documentElement?.requestFullscreen(); } else if (Utils.isMobile) { await AutoOrientation.landscapeAutoMode(forceSensor: true); - } else if (Utils.isDesktop && Pref.nativeFullscreen) { + } else if (Utils.isDesktop && !inAppFullScreen) { await const MethodChannel( 'com.alexmercerind/media_kit_video', ).invokeMethod( @@ -76,7 +76,7 @@ Future hideStatusBar() async { bool _showStatusBar = true; //退出全屏显示 -Future showStatusBar() async { +Future showStatusBar({bool inAppFullScreen = false}) async { if (_showStatusBar) { return; } @@ -94,7 +94,7 @@ Future showStatusBar() async { mode, overlays: SystemUiOverlay.values, ); - } else if (Utils.isDesktop && Pref.nativeFullscreen) { + } else if (Utils.isDesktop && !inAppFullScreen) { await const MethodChannel( 'com.alexmercerind/media_kit_video', ).invokeMethod( diff --git a/lib/utils/page_utils.dart b/lib/utils/page_utils.dart index 0f9d1b8df..8bdadaaec 100644 --- a/lib/utils/page_utils.dart +++ b/lib/utils/page_utils.dart @@ -631,13 +631,13 @@ abstract class PageUtils { } } - static Future launchURL(String url) async { + static Future launchURL( + String url, { + LaunchMode mode = LaunchMode.externalApplication, + }) async { try { final Uri uri = Uri.parse(url); - if (!await launchUrl( - uri, - mode: LaunchMode.externalApplication, - )) { + if (!await launchUrl(uri, mode: mode)) { SmartDialog.showToast('Could not launch $url'); } } catch (e) { diff --git a/lib/utils/storage_key.dart b/lib/utils/storage_key.dart index a6d388f94..7f81b4047 100644 --- a/lib/utils/storage_key.dart +++ b/lib/utils/storage_key.dart @@ -213,8 +213,7 @@ abstract class SettingBoxKey { enableGradientBg = 'enableGradientBg', navBarSort = 'navBarSort', tempPlayerConf = 'tempPlayerConf', - reduceLuxColor = 'reduceLuxColor', - nativeFullscreen = 'nativeFullscreen'; + reduceLuxColor = 'reduceLuxColor'; } abstract class LocalCacheKey { diff --git a/lib/utils/storage_pref.dart b/lib/utils/storage_pref.dart index ed4106b52..5ca97d30d 100644 --- a/lib/utils/storage_pref.dart +++ b/lib/utils/storage_pref.dart @@ -832,7 +832,4 @@ abstract class Pref { static bool get keyboardControl => _setting.get(SettingBoxKey.keyboardControl, defaultValue: true); - - static bool get nativeFullscreen => - _setting.get(SettingBoxKey.nativeFullscreen, defaultValue: true); }