fix: 修复迁移后的基础UI显示问题

This commit is contained in:
cancerai committed 2026-10-25 16:03:05 +08:00
1 parent 18017f819a
commit a93e06f60c
68 files changed
+2293 -8404

No files matched your search

+13 -4
View File
@@ -8,7 +8,7 @@ import 'package:flutter/foundation.dart'
show FlutterErrorDetails, defaultTargetPlatform, TargetPlatform;
import 'package:flutter/material.dart';
import 'package:flutter/services.dart'
show DeviceOrientation, SystemChrome;
show DeviceOrientation, SystemChrome, SystemUiMode;
import 'package:iwbtc/src/core/app_error.dart';
import 'package:iwbtc/src/app_root.dart' show AppRoot;
@@ -36,12 +36,17 @@ Future<void> main() async {
);
}
/// 移动端专属的显示适配:锁定横屏。
/// 移动端专属的显示适配:横屏锁定 + 沉浸式全屏。
///
/// 画面是 800×608 的横向虚拟舞台,横屏下信箱缩放才能拿到可用的可视比例;
/// 竖屏时上下留白巨大、画面极小,虚拟手柄也会挤成一团。桌面端保持原样不干预。
/// (安卓另有 AndroidManifest 的 `screenOrientation="sensorLandscape"`,
/// 保证冷启动第一帧就是横屏,避免先竖后横的闪烁。)
///
/// 沉浸式:用 `SystemUiMode.immersiveSticky` 隐藏状态栏与导航栏,让游戏
/// 铺满整个屏幕,与常规手机游戏一致。相比普通 `immersive`,
/// `immersiveSticky` 在用户从屏幕边缘滑出系统栏后数秒会**自动重新隐藏**,
/// 不会弹出"退出沉浸模式"的提示条,体验更顺。
Future<void> _configureMobile() async {
final t = defaultTargetPlatform;
if (t != TargetPlatform.android && t != TargetPlatform.iOS) return;
@@ -50,8 +55,12 @@ Future<void> _configureMobile() async {
DeviceOrientation.landscapeLeft,
DeviceOrientation.landscapeRight,
]);
// 沉浸式全屏:隐藏状态栏与导航栏,游戏铺满整个屏幕。
await SystemChrome.setEnabledSystemUIMode(
SystemUiMode.immersiveSticky,
);
} catch (e) {
// 某些设备/系统策略不允许锁定方向,属可容忍情况,不影响游戏运行。
AppError.warn('锁定横屏失败(保持系统默认方向)', '$e');
// 某些设备/系统策略不允许锁定方向或沉浸,属可容忍情况,不影响游戏运行。
AppError.warn('移动端显示适配失败(横屏/沉浸)', '$e');
}
}