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'; import '../../../common/widgets/custom_toast.dart'; import '../../../utils/storage.dart'; //横屏 Future landScape() async { 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, // ], // ); await AutoOrientation.landscapeAutoMode(forceSensor: true); } 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()); } } //竖屏 Future verticalScreen() async { await SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, ]); } //全向 Future autoScreen() async { await SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight, ]); } Future enterFullScreen() async { await SystemChrome.setEnabledSystemUIMode( SystemUiMode.immersiveSticky, ); } //退出全屏显示 Future exitFullScreen() async { dynamic document; late SystemUiMode mode = SystemUiMode.edgeToEdge; try { if (kIsWeb) { document.exitFullscreen(); } else if (Platform.isAndroid || Platform.isIOS) { if (Platform.isAndroid && (await DeviceInfoPlugin().androidInfo).version.sdkInt < 29) { mode = SystemUiMode.manual; } await SystemChrome.setEnabledSystemUIMode( mode, overlays: SystemUiOverlay.values, ); if (setting.get(SettingBoxKey.horizontalScreen, defaultValue: false)) { autoScreen(); } else { verticalScreen(); } } 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()); } }