This commit is contained in:
+36
-5
@@ -2,6 +2,7 @@ import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'dart:ui';
|
||||
import 'package:cloudreve4_flutter/core/utils/app_logger.dart';
|
||||
import 'package:logger/logger.dart' show Level;
|
||||
import 'package:cloudreve4_flutter/presentation/widgets/desktop_title_bar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
@@ -11,6 +12,7 @@ import 'package:media_kit/media_kit.dart';
|
||||
import 'package:oktoast/oktoast.dart';
|
||||
import 'package:window_manager/window_manager.dart';
|
||||
import 'config/app_config.dart';
|
||||
import 'core/constants/storage_keys.dart';
|
||||
import 'presentation/providers/auth_provider.dart';
|
||||
import 'presentation/providers/file_manager_provider.dart';
|
||||
import 'presentation/providers/navigation_provider.dart';
|
||||
@@ -19,9 +21,11 @@ import 'presentation/providers/download_manager_provider.dart';
|
||||
import 'presentation/providers/user_setting_provider.dart';
|
||||
import 'presentation/providers/admin_provider.dart';
|
||||
import 'presentation/providers/quick_access_provider.dart';
|
||||
import 'presentation/providers/sync_provider.dart';
|
||||
import 'presentation/providers/theme_provider.dart';
|
||||
import 'services/upload_service.dart';
|
||||
import 'services/api_service.dart';
|
||||
import 'services/storage_service.dart';
|
||||
import 'services/server_service.dart';
|
||||
import 'services/cache_manager_service.dart';
|
||||
import 'services/avatar_cache_service.dart';
|
||||
@@ -29,12 +33,42 @@ import 'core/utils/video_fullscreen.dart';
|
||||
import 'services/desktop_service.dart';
|
||||
import 'router/app_router.dart';
|
||||
import 'presentation/widgets/toast_helper.dart';
|
||||
import 'presentation/widgets/update_prompt.dart';
|
||||
import 'src/rust/frb_generated.dart' show RustSyncApi;
|
||||
|
||||
final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
|
||||
|
||||
Level _parseLogLevel(String level) {
|
||||
return switch (level) {
|
||||
'error' => Level.error,
|
||||
'warning' => Level.warning,
|
||||
'info' => Level.info,
|
||||
'debug' => Level.debug,
|
||||
'trace' => Level.trace,
|
||||
_ => Level.info,
|
||||
};
|
||||
}
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
await AppLogger.init();
|
||||
final savedLevel = await StorageService.instance.getString(
|
||||
StorageKeys.logLevel,
|
||||
);
|
||||
if (savedLevel != null) {
|
||||
final level = _parseLogLevel(savedLevel);
|
||||
AppLogger.setLevel(level);
|
||||
}
|
||||
AppLogger.i("应用启动,日志系统就绪");
|
||||
|
||||
try {
|
||||
await RustSyncApi.init();
|
||||
AppLogger.i("RustSyncApi 初始化成功");
|
||||
} catch (e) {
|
||||
AppLogger.e("RustSyncApi 初始化失败: $e");
|
||||
}
|
||||
|
||||
// 捕获 flutter_cache_manager 在 Windows 上删除缓存文件时的文件占用异常
|
||||
// 该异常是后台异步抛出的,无法通过 try-catch 拦截,需绑定错误处理器静默忽略
|
||||
FlutterError.onError = (details) {
|
||||
@@ -51,10 +85,6 @@ void main() async {
|
||||
return false;
|
||||
};
|
||||
|
||||
// 初始化日志
|
||||
await AppLogger.init();
|
||||
AppLogger.i("应用启动,日志系统就绪");
|
||||
|
||||
// 桌面端初始化窗口管理和系统托盘
|
||||
if (Platform.isWindows || Platform.isLinux) {
|
||||
// 实例化 FlutterSingleInstance 获取单实例句柄
|
||||
@@ -156,6 +186,7 @@ class CloudreveApp extends StatelessWidget {
|
||||
ChangeNotifierProvider(create: (_) => UserSettingProvider()),
|
||||
ChangeNotifierProvider(create: (_) => AdminProvider()),
|
||||
ChangeNotifierProvider(create: (_) => QuickAccessProvider()..load()),
|
||||
ChangeNotifierProvider(create: (_) => SyncProvider()),
|
||||
],
|
||||
child: const AppView(),
|
||||
);
|
||||
@@ -215,7 +246,7 @@ class AppView extends StatelessWidget {
|
||||
currentWidget = FilterQualityWidget(child: currentWidget);
|
||||
}
|
||||
// 添加全局错误处理
|
||||
return ErrorHandler(child: currentWidget);
|
||||
return UpdatePrompt(child: ErrorHandler(child: currentWidget));
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user