import 'dart:async'; import 'dart:io'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:auto_orientation/auto_orientation.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; bool _isDesktopFullScreen = false; Future enterDesktopFullscreen({bool inAppFullScreen = false}) async { if (!inAppFullScreen && !_isDesktopFullScreen) { _isDesktopFullScreen = true; try { await const MethodChannel( 'com.alexmercerind/media_kit_video', ).invokeMethod('Utils.EnterNativeFullscreen'); } catch (_) { if (kDebugMode) rethrow; } } } Future exitDesktopFullscreen() async { if (_isDesktopFullScreen) { _isDesktopFullScreen = false; try { await const MethodChannel( 'com.alexmercerind/media_kit_video', ).invokeMethod('Utils.ExitNativeFullscreen'); } catch (_) { if (kDebugMode) rethrow; } } } //横屏 Future landscape() async { try { await AutoOrientation.landscapeAutoMode(forceSensor: true); } catch (_) { if (kDebugMode) rethrow; } } //竖屏 Future verticalScreenForTwoSeconds() async { await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); await autoScreen(); } //全向 bool allowRotateScreen = Pref.allowRotateScreen; Future autoScreen() async { if (Utils.isMobile && allowRotateScreen) { await SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, // DeviceOrientation.portraitDown, DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight, ]); } } Future fullAutoModeForceSensor() async { await AutoOrientation.fullAutoMode(forceSensor: true); } bool _showStatusBar = true; Future hideStatusBar() async { if (!_showStatusBar) { return; } _showStatusBar = false; await SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); } //退出全屏显示 Future showStatusBar() async { if (_showStatusBar) { return; } _showStatusBar = true; SystemUiMode mode; if (Platform.isAndroid && (await Utils.sdkInt < 29)) { mode = SystemUiMode.manual; } else { mode = SystemUiMode.edgeToEdge; } await SystemChrome.setEnabledSystemUIMode( mode, overlays: SystemUiOverlay.values, ); }