Files
kuaishai2/lib/main.dart
Developer 37d2af70b7 feat(device): 启动自动连接 USB 串口 + 隐藏设置页配置项 + 标题栏连接状态
- 新增 AutoSerialConnect 服务:启动后自动连接第一个 USB 串口设备,
  固定 115200/8/N/1,连接失败时每 3s 重试,断开后重新进入重试循环
- main.dart 通过 ProviderContainer 在 runApp 之前触发 autoSerialConnectProvider
- 移除设置页「串口配置」菜单项及对应面板分支
- StatusBar 在「设备运行状态」前增加串口连接状态指示(已连接/连接中/未连接)
2026-06-04 16:57:45 +08:00

72 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'core/router/app_router.dart';
import 'core/theme/app_theme.dart';
import 'core/localization/app_localizations.dart';
import 'core/localization/locale_provider.dart';
import 'core/database/database_service.dart';
import 'features/device/providers/serial_provider.dart';
/// 应用入口
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Kiosk 模式:隐藏系统状态栏和导航栏
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
// 固定横屏
SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]);
final db = DatabaseService.instance;
await db.database;
await db.initTestData();
// 使用 ProviderContainer 在 runApp 之前触发启动自动连接
final container = ProviderContainer();
container.read(autoSerialConnectProvider);
runApp(
UncontrolledProviderScope(
container: container,
child: const KuaishaiApp(),
),
);
}
/// 应用主体
class KuaishaiApp extends ConsumerWidget {
const KuaishaiApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final router = ref.watch(goRouterProvider);
final locale = ref.watch(localeProvider);
return MaterialApp.router(
title: '污水毒品快检一体机',
debugShowCheckedModeBanner: false,
theme: AppTheme.lightTheme(),
darkTheme: AppTheme.darkTheme(),
themeMode: ThemeMode.light,
// 国际化配置
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [
Locale('zh', 'CN'),
Locale('en', 'US'),
],
locale: locale,
// 路由配置
routerConfig: router,
);
}
}