Files
2026-08-31 15:09:38 +08:00

61 lines
2.2 KiB
Dart

import 'dart:async';
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter_subscreen_plugin/flutter_subscreen_plugin.dart';
import 'package:get/get.dart';
import 'package:pj_supermarket_cloud/app.dart';
import 'package:pj_supermarket_cloud/common/index.dart';
import 'package:pj_supermarket_cloud/sub_screen/page/index.dart';
/// 启动 Flutter 主屏或双屏插件创建的独立副屏入口。
void main() {
checkSubScreen();
}
/// 根据 Engine 默认路由初始化对应屏幕,避免副屏持有主屏的 GetX 与硬件状态。
Future<void> checkSubScreen() async {
final defaultRouteName = PlatformDispatcher.instance.defaultRouteName;
logger.d("当前的屏幕$defaultRouteName");
switch (defaultRouteName) {
case "/":
WidgetsFlutterBinding.ensureInitialized();
DartPluginRegistrant.ensureInitialized();
await AppRuntimeTool.initializePlatform();
final appTheme = Get.put(AppThemeControl());
final productHourType = Get.put(
ProductHourTypeControl(),
permanent: true,
);
Get.put(TerminalAdminSessionControl(), permanent: true);
// 睡眠状态需要跨终端工作区路由常驻,但不会进入副屏 Engine。
Get.put(TerminalSleepControl(), permanent: true);
final terminalDeviceStatus = Get.put(
TerminalDeviceStatusControl(),
permanent: true,
);
final terminalMenu = Get.put(TerminalMenuControl());
final app = Get.put(AppControl());
Get.put(FaceRecognitionSessionService(), permanent: true);
runApp(MainApp());
await Future.microtask(() => app.initAsync());
if (app.startupFinished.value) {
await appTheme.initAsync();
await productHourType.initAsync();
await terminalDeviceStatus.initAsync();
await terminalMenu.initAsync();
}
break;
case "subMain":
WidgetsFlutterBinding.ensureInitialized();
DartPluginRegistrant.ensureInitialized();
bool isMultipleScreen = await SubScreenPlugin.isMultipleScreen;
bool isOverlay = await SubScreenPlugin.checkOverlayPermission;
if (isMultipleScreen && isOverlay) {
runApp(SubAppPage());
}
break;
}
}