Files
PiliPlus/lib/plugin/pl_player/utils/fullscreen.dart
My-Responsitories 38a7afd63a opt: player controller (#1753)
* opt: player controller

* tweak [skip ci]

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>

---------

Co-authored-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
2025-11-26 11:45:16 +08:00

92 lines
2.3 KiB
Dart

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/services.dart';
bool _isDesktopFullScreen = false;
@pragma('vm:notify-debugger-on-exception')
Future<void> 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<void> exitDesktopFullscreen() async {
if (_isDesktopFullScreen) {
_isDesktopFullScreen = false;
try {
await const MethodChannel(
'com.alexmercerind/media_kit_video',
).invokeMethod('Utils.ExitNativeFullscreen');
} catch (_) {}
}
}
//横屏
@pragma('vm:notify-debugger-on-exception')
Future<void> landscape() async {
try {
await AutoOrientation.landscapeAutoMode(forceSensor: true);
} catch (_) {}
}
//竖屏
Future<void> verticalScreenForTwoSeconds() async {
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
await autoScreen();
}
//全向
bool allowRotateScreen = Pref.allowRotateScreen;
Future<void> autoScreen() async {
if (Utils.isMobile && allowRotateScreen) {
await SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
// DeviceOrientation.portraitDown,
DeviceOrientation.landscapeLeft,
DeviceOrientation.landscapeRight,
]);
}
}
Future<void> fullAutoModeForceSensor() {
return AutoOrientation.fullAutoMode(forceSensor: true);
}
bool _showStatusBar = true;
Future<void> hideStatusBar() async {
if (!_showStatusBar) {
return;
}
_showStatusBar = false;
await SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
}
//退出全屏显示
Future<void> 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,
);
}