From 40849cb68d096849b06f5d76e2946dc058039503 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Sat, 19 Aug 2023 08:35:17 +0800 Subject: [PATCH] =?UTF-8?q?opt:=20=E5=85=A8=E5=B1=8F=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Podfile.lock | 6 +++ lib/plugin/pl_player/utils/fullscreen.dart | 58 ++++++++++++++++------ lib/plugin/pl_player/view.dart | 2 +- pubspec.lock | 12 +---- pubspec.yaml | 1 - 5 files changed, 53 insertions(+), 26 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 68128de1..5100bf76 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -5,6 +5,8 @@ PODS: - device_info_plus (0.0.1): - Flutter - Flutter (1.0.0) + - flutter_volume_controller (0.0.1): + - Flutter - FMDB (2.7.5): - FMDB/standard (= 2.7.5) - FMDB/standard (2.7.5) @@ -46,6 +48,7 @@ DEPENDENCIES: - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - Flutter (from `Flutter`) + - flutter_volume_controller (from `.symlinks/plugins/flutter_volume_controller/ios`) - image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`) - media_kit_libs_ios_video (from `.symlinks/plugins/media_kit_libs_ios_video/ios`) - media_kit_native_event_loop (from `.symlinks/plugins/media_kit_native_event_loop/ios`) @@ -74,6 +77,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/device_info_plus/ios" Flutter: :path: Flutter + flutter_volume_controller: + :path: ".symlinks/plugins/flutter_volume_controller/ios" image_gallery_saver: :path: ".symlinks/plugins/image_gallery_saver/ios" media_kit_libs_ios_video: @@ -109,6 +114,7 @@ SPEC CHECKSUMS: connectivity_plus: 07c49e96d7fc92bc9920617b83238c4d178b446a device_info_plus: 7545d84d8d1b896cb16a4ff98c19f07ec4b298ea Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + flutter_volume_controller: e4d5832f08008180f76e30faf671ffd5a425e529 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb media_kit_libs_ios_video: a5fe24bc7875ccd6378a0978c13185e1344651c1 diff --git a/lib/plugin/pl_player/utils/fullscreen.dart b/lib/plugin/pl_player/utils/fullscreen.dart index 4f5ca948..46540bbd 100644 --- a/lib/plugin/pl_player/utils/fullscreen.dart +++ b/lib/plugin/pl_player/utils/fullscreen.dart @@ -1,14 +1,34 @@ import 'dart:io'; -import 'package:device_info_plus/device_info_plus.dart'; -import 'package:auto_orientation/auto_orientation.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; //横屏 -/// 低版本xcode不支持auto_orientation Future landScape() async { - if (Platform.isAndroid || Platform.isIOS) { - await AutoOrientation.landscapeAutoMode(forceSensor: true); + dynamic document; + try { + if (kIsWeb) { + await document.documentElement?.requestFullscreen(); + } else if (Platform.isAndroid || Platform.isIOS) { + await SystemChrome.setEnabledSystemUIMode( + SystemUiMode.immersiveSticky, + overlays: [], + ); + await SystemChrome.setPreferredOrientations( + [ + DeviceOrientation.landscapeLeft, + DeviceOrientation.landscapeRight, + ], + ); + } else if (Platform.isMacOS || Platform.isWindows || Platform.isLinux) { + await const MethodChannel('com.alexmercerind/media_kit_video') + .invokeMethod( + 'Utils.EnterNativeFullscreen', + ); + } + } catch (exception, stacktrace) { + debugPrint(exception.toString()); + debugPrint(stacktrace.toString()); } } @@ -27,14 +47,24 @@ Future enterFullScreen() async { //退出全屏显示 Future exitFullScreen() async { - late SystemUiMode mode; - if ((Platform.isAndroid && - (await DeviceInfoPlugin().androidInfo).version.sdkInt >= 29) || - !Platform.isAndroid) { - mode = SystemUiMode.edgeToEdge; - } else { - mode = SystemUiMode.manual; + dynamic document; + try { + if (kIsWeb) { + document.exitFullscreen(); + } else if (Platform.isAndroid || Platform.isIOS) { + await SystemChrome.setEnabledSystemUIMode( + SystemUiMode.manual, + overlays: SystemUiOverlay.values, + ); + await SystemChrome.setPreferredOrientations([]); + } else if (Platform.isMacOS || Platform.isWindows || Platform.isLinux) { + await const MethodChannel('com.alexmercerind/media_kit_video') + .invokeMethod( + 'Utils.ExitNativeFullscreen', + ); + } + } catch (exception, stacktrace) { + debugPrint(exception.toString()); + debugPrint(stacktrace.toString()); } - await SystemChrome.setEnabledSystemUIMode(mode, - overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]); } diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index e5e1f0fd..cfb9dad8 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -178,7 +178,7 @@ class _PLVideoPlayerState extends State /// 进入全屏 await enterFullScreen(); // 横屏 - await landScape(); + await verticalScreen(); break; case FullScreenMode.horizontal: diff --git a/pubspec.lock b/pubspec.lock index 0de9ad79..4ae5f387 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -57,14 +57,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" - auto_orientation: - dependency: "direct main" - description: - name: auto_orientation - sha256: cd56bb59b36fa54cc28ee254bc600524f022a4862f31d5ab20abd7bb1c54e678 - url: "https://pub.dev" - source: hosted - version: "2.3.1" boolean_selector: dependency: transitive description: @@ -309,10 +301,10 @@ packages: dependency: "direct main" description: name: dio - sha256: "3866d67f93523161b643187af65f5ac08bc991a5bcdaf41a2d587fe4ccb49993" + sha256: ce75a1b40947fea0a0e16ce73337122a86762e38b982e1ccb909daa3b9bc4197 url: "https://pub.dev" source: hosted - version: "5.3.0" + version: "5.3.2" dio_cookie_manager: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index cd954d89..6f5810ec 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -108,7 +108,6 @@ dependencies: # 进度条 audio_video_progress_bar: ^1.0.1 animations: ^2.0.7 - auto_orientation: ^2.3.1 # 获取appx信息 package_info_plus: ^4.1.0