- 新增 VideoRecorder 基于 flutter_webrtc MediaRecorder 录制远程视频为 MP4 - 新增 ControlMessageDecoder 解析被控端上报的 REPORT_* protobuf 消息 - 连接控制器支持分辨率/帧率切换、录制状态管理与远程上报处理 - 远程控制页新增更多菜单(静音/分辨率/帧率/录制),并统一退出时断开连接 - WebRTC 编排器在 DataChannel 打开及媒体就绪后主动请求默认分辨率,解决黑屏问题 - 新增 DisplayModeUtil 在 Android 上启用最高刷新率 - 登出时失效设备相关 Provider,避免切换账号后读到旧缓存
47 lines
2.0 KiB
Dart
47 lines
2.0 KiB
Dart
import 'package:material_ui/material_ui.dart' show WidgetsFlutterBinding;
|
||
import 'package:flutter/widgets.dart' show runApp;
|
||
|
||
import 'package:flutter_baidu_mapapi_base/flutter_baidu_mapapi_base.dart'
|
||
show BMFMapSDK, BMF_COORD_TYPE;
|
||
import 'package:flutter_baidu_mapapi_map/flutter_baidu_mapapi_map.dart'
|
||
show BMFAndroidVersion;
|
||
|
||
import 'app/app.dart';
|
||
import 'app/constants/app_constants.dart';
|
||
import 'app/router/app_router.dart';
|
||
import 'core/storage/token_storage.dart';
|
||
import 'core/utils/device_info_util.dart';
|
||
import 'core/utils/display_mode_util.dart';
|
||
import 'core/utils/system_ui_util.dart';
|
||
|
||
/// 应用入口。
|
||
///
|
||
/// 职责:初始化存储、配置系统 UI、打印设备信息、构建路由与根组件。不包含任何业务或 UI 逻辑。
|
||
void main() async {
|
||
WidgetsFlutterBinding.ensureInitialized();
|
||
|
||
// Android 高刷适配:将屏幕切换到设备支持的最高刷新率(120Hz / 144Hz),
|
||
// 提升动画与滚动流畅度。iOS ProMotion 由系统自动匹配,无需处理。
|
||
await DisplayModeUtil.enableBestDisplayMode();
|
||
|
||
// 初始化百度地图 SDK(需申请 AK;坐标类型使用 BD09LL,设备 GPS 坐标在展示前转换)。
|
||
BMFMapSDK.setAgreePrivacy(true);
|
||
BMFMapSDK.setApiKeyAndCoordType(
|
||
AppConstants.kBaiduMapAk, BMF_COORD_TYPE.BD09LL);
|
||
// 初始化 Android 版本适配:Android 10+ 使用 surfaceMapView(比默认 textureMapView 更稳定),
|
||
// 避免百度 SDK 在模拟器 / 部分机型上因 textureView + EGL 渲染冲突触发原生崩溃(SIGSEGV / EGL_BAD_MATCH)。
|
||
await BMFAndroidVersion.initAndroidVersion();
|
||
|
||
// 沉浸式状态栏 / edge-to-edge / 刘海屏适配(不影响启动主流程)。
|
||
await SystemUiUtil.configure();
|
||
|
||
// 初始化本地存储(含超时保护,避免阻塞启动导致卡在首屏)。
|
||
await TokenStorage.initialize()
|
||
.timeout(const Duration(seconds: 5), onTimeout: () {});
|
||
// 设备信息打印不阻塞启动主流程。
|
||
DeviceInfoUtil.printDeviceInfo();
|
||
|
||
final router = buildAppRouter();
|
||
runApp(buildApp(router));
|
||
}
|