Commit b4b51f0d by tanghuan

优化 setScreen 指令

1 parent 83d4d764
...@@ -2,6 +2,9 @@ import 'package:appframe/services/dispatcher.dart'; ...@@ -2,6 +2,9 @@ import 'package:appframe/services/dispatcher.dart';
import 'package:flutter/services.dart' hide MessageHandler; import 'package:flutter/services.dart' hide MessageHandler;
class ScreenHandler extends MessageHandler { class ScreenHandler extends MessageHandler {
/// 是否处于横屏全屏状态
bool _isLandscape = false;
@override @override
Future<dynamic> handleMessage(dynamic params) async { Future<dynamic> handleMessage(dynamic params) async {
if (params is! Map<String, dynamic>) { if (params is! Map<String, dynamic>) {
...@@ -17,20 +20,30 @@ class ScreenHandler extends MessageHandler { ...@@ -17,20 +20,30 @@ class ScreenHandler extends MessageHandler {
Future<void> _setOrientation(int screenType) async { Future<void> _setOrientation(int screenType) async {
if (screenType == 2) { if (screenType == 2) {
// 横屏模式 // 横屏模式
_isLandscape = true;
await SystemChrome.setPreferredOrientations([ await SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeLeft,
DeviceOrientation.landscapeRight, DeviceOrientation.landscapeRight,
]); ]);
// 隐藏状态栏 // 隐藏状态栏(immersiveSticky:短暂显示后自动隐藏)
await SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive); await SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
// 监听系统UI变化,用户滑动唤出状态栏后立即重新隐藏
SystemChrome.setSystemUIChangeCallback((isSystemUIDefaultVisible) async {
if (_isLandscape && isSystemUIDefaultVisible) {
await SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
}
});
} else { } else {
// 竖屏模式(默认) // 竖屏模式(默认)
_isLandscape = false;
await SystemChrome.setPreferredOrientations([ await SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp, DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown, DeviceOrientation.portraitDown,
]); ]);
// 显示状态栏 // 显示状态栏
await SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); await SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
// 移除系统UI变化监听
SystemChrome.setSystemUIChangeCallback(null);
} }
} }
} }
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!