mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-04-20 03:06:59 +08:00
81 lines
2.1 KiB
Dart
81 lines
2.1 KiB
Dart
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<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 (_) {}
|
|
}
|
|
}
|
|
|
|
List<DeviceOrientation>? _lastOrientation;
|
|
Future<void>? _setPreferredOrientations(List<DeviceOrientation> orientations) {
|
|
if (_lastOrientation == orientations) {
|
|
return null;
|
|
}
|
|
_lastOrientation = orientations;
|
|
return SystemChrome.setPreferredOrientations(orientations);
|
|
}
|
|
|
|
Future<void>? portraitUpMode() {
|
|
return _setPreferredOrientations(const [.portraitUp]);
|
|
}
|
|
|
|
Future<void>? landscapeLeftMode() {
|
|
return _setPreferredOrientations(const [.landscapeLeft]);
|
|
}
|
|
|
|
Future<void>? landscapeRightMode() {
|
|
return _setPreferredOrientations(const [.landscapeRight]);
|
|
}
|
|
|
|
Future<void>? fullMode() {
|
|
return _setPreferredOrientations(
|
|
const [.portraitUp, .landscapeLeft, .landscapeRight],
|
|
);
|
|
}
|
|
|
|
bool _showStatusBar = true;
|
|
Future<void>? hideStatusBar() {
|
|
if (!_showStatusBar) {
|
|
return null;
|
|
}
|
|
_showStatusBar = false;
|
|
return SystemChrome.setEnabledSystemUIMode(.immersiveSticky);
|
|
}
|
|
|
|
//退出全屏显示
|
|
Future<void>? showStatusBar() {
|
|
if (_showStatusBar) {
|
|
return null;
|
|
}
|
|
_showStatusBar = true;
|
|
return SystemChrome.setEnabledSystemUIMode(
|
|
Platform.isAndroid && Utils.sdkInt < 29 ? .manual : .edgeToEdge,
|
|
overlays: SystemUiOverlay.values,
|
|
);
|
|
}
|