Skip to content

Commit deb7aef

Browse files
committed
refactor(main): 提取初始化逻辑为独立函数,runApp 移至 runZonedGuarded 外部
1 parent 381497f commit deb7aef

2 files changed

Lines changed: 27 additions & 27 deletions

File tree

assets/eula.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ Bugaoshan 是一款自由开源软件,基于 [GNU AGPL v3](https://www.gnu.org
4343
我们深知隐私对您的重要性,并承诺最小化数据处理:
4444
- **处理的信息**:本软件仅处理提供服务所必需的数据,包括您的学号、密码、认证凭证(如 Access Token)及通过该凭证获取的个人基本信息,以及课表、成绩、培养方案、电费、第二课堂等校园服务数据。
4545
- **本地存储**:上述数据仅存储在您的设备本地,本软件未提供任何云同步功能。
46-
- **数据传输与客观限制**:您的数据仅在您的设备与四川大学相关服务器之间传输,不会随应用更新检查上传至非校园业务所必需的第三方服务器。应用在检查更新时会访问 GitHub 服务器,但不会夹带用户账号、密码、认证凭证或校园业务数据。**需要特别提醒的是,学校教务系统(zhjw.scu.edu.cn)目前仅支持 HTTP 协议,这意味着登录后用于维持会话的认证凭证(Token/Cookie)在网络传输中未加密,存在被同一网络下他人截获并冒用身份的风险。**
46+
- **数据传输与客观限制**:您的数据仅在您的设备与四川大学相关服务器之间传输,不会随应用更新检查上传至非校园业务所必需的第三方服务器。应用在检查更新时会访问 软件仓库/GitHub 或其代理、镜像服务器,但不会夹带用户账号、密码、认证凭证或校园业务数据。**需要特别提醒的是,学校教务系统(zhjw.scu.edu.cn)目前仅支持 HTTP 协议,这意味着登录后用于维持会话的认证凭证(Token/Cookie)在网络传输中未加密,存在被同一网络下他人截获并冒用身份的风险。**
4747
- **无行为追踪**:本软件未集成任何第三方数据分析或行为收集追踪 SDK(Telemetry),您的使用习惯完全私密。
4848
- **数据清理**:您可以随时在系统设置中清除应用缓存、退出登录或卸载本软件,以删除本软件保存在本地的数据。不同平台受系统机制影响,个别缓存或配置文件的清理方式可能有所不同。(注:桌面端没有使用软件包管理器,卸载时需手动清理相关应用配置文件目录)。
4949

lib/main.dart

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,35 @@ import 'package:bugaoshan/services/window_state_service.dart';
1313
import 'package:system_theme/system_theme.dart';
1414

1515
Future<void> main() async {
16-
await runZonedGuarded(
17-
() async {
18-
WidgetsFlutterBinding.ensureInitialized();
19-
if (!kIsWeb) {
20-
DartPluginRegistrant.ensureInitialized();
21-
if (_isDesktopPlatform) {
22-
sqfliteFfiInit();
23-
databaseFactory = databaseFactoryFfi;
24-
}
25-
}
26-
configureDependencies();
27-
await ensureBasicDependencies();
16+
try {
17+
await _initializeApp();
18+
runApp(MyApp());
19+
} catch (error, stackTrace) {
20+
debugPrint('Startup error: $error\n$stackTrace');
21+
runApp(const _StartupErrorApp());
22+
}
23+
}
2824

29-
// 桌面端记住窗口位置和大小,下次启动时恢复
30-
if (!kIsWeb && _isDesktopPlatform) {
31-
await WindowStateService.create(getIt<SharedPreferences>());
32-
}
25+
Future<void> _initializeApp() async {
26+
WidgetsFlutterBinding.ensureInitialized();
27+
if (!kIsWeb) {
28+
DartPluginRegistrant.ensureInitialized();
29+
if (_isDesktopPlatform) {
30+
sqfliteFfiInit();
31+
databaseFactory = databaseFactoryFfi;
32+
}
33+
}
34+
configureDependencies();
35+
await ensureBasicDependencies();
3336

34-
// 获取系统主题颜色
35-
SystemTheme.fallbackColor = Colors.blue;
36-
await SystemTheme.accentColor.load();
37+
// 桌面端记住窗口位置和大小,下次启动时恢复
38+
if (!kIsWeb && _isDesktopPlatform) {
39+
await WindowStateService.create(getIt<SharedPreferences>());
40+
}
3741

38-
runApp(MyApp());
39-
},
40-
(error, stackTrace) {
41-
debugPrint('Startup error: $error\n$stackTrace');
42-
runApp(const _StartupErrorApp());
43-
},
44-
);
42+
// 获取系统主题颜色
43+
SystemTheme.fallbackColor = Colors.blue;
44+
await SystemTheme.accentColor.load();
4545
}
4646

4747
bool get _isDesktopPlatform {

0 commit comments

Comments
 (0)