import 'dart:async'; import 'dart:io' show Platform; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/services.dart' show SystemChrome, MethodChannel, SystemUiOverlay, DeviceOrientation; bool _isDesktopFullScreen = false; @pragma('vm:notify-debugger-on-exception') Future enterDesktopFullScreen({bool inAppFullScreen = false}) async { if (!inAppFullScreen && !_isDesktopFullScreen) { _isDesktopFullScreen = true; try { await const MethodChannel( 'com.alexmercerind/media_kit_video', ).invokeMethod('Utils.EnterNativeFullscreen'); } catch (_) {} } } @pragma('vm:notify-debugger-on-exception') Future exitDesktopFullScreen() async { if (_isDesktopFullScreen) { _isDesktopFullScreen = false; try { await const MethodChannel( 'com.alexmercerind/media_kit_video', ).invokeMethod('Utils.ExitNativeFullscreen'); } catch (_) {} } } List? _lastOrientation; Future? _setPreferredOrientations(List orientations) { if (_lastOrientation == orientations) { return null; } _lastOrientation = orientations; return SystemChrome.setPreferredOrientations(orientations); } Future? portraitUpMode() { return _setPreferredOrientations(const [.portraitUp]); } Future? landscapeLeftMode() { return _setPreferredOrientations(const [.landscapeLeft]); } Future? landscapeRightMode() { return _setPreferredOrientations(const [.landscapeRight]); } Future? fullMode() { return _setPreferredOrientations( const [.portraitUp, .landscapeLeft, .landscapeRight], ); } bool _showStatusBar = true; Future? hideStatusBar() { if (!_showStatusBar) { return null; } _showStatusBar = false; return SystemChrome.setEnabledSystemUIMode(.immersiveSticky); } //退出全屏显示 Future? showStatusBar() { if (_showStatusBar) { return null; } _showStatusBar = true; return SystemChrome.setEnabledSystemUIMode( Platform.isAndroid && Utils.sdkInt < 29 ? .manual : .edgeToEdge, overlays: SystemUiOverlay.values, ); }