Files
MookNote/lib/main.dart
DelLevin-Home e181ebf9c6 v0.1.6版本
2026-03-12 23:33:41 +08:00

83 lines
2.2 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import 'pages/home_page.dart';
import 'utils/theme/app_theme.dart';
import 'utils/app_router.dart';
import 'utils/user_prefs.dart';
import 'utils/sync/auto_backup_service.dart';
import 'providers/app_provider.dart';
import 'package:flutter/widget_previews.dart';
void main() async {
// 确保 Flutter 绑定初始化完成
WidgetsFlutterBinding.ensureInitialized();
// 设置系统导航栏颜色与App主题一致
SystemChrome.setSystemUIOverlayStyle(
const SystemUiOverlayStyle(
systemNavigationBarColor: Colors.white,
systemNavigationBarIconBrightness: Brightness.dark,
),
);
// 初始化用户偏好设置
await UserPrefs.init();
// 初始化数据库
final appProvider = AppProvider();
await appProvider.initDatabase();
// 检查并恢复本地自动备份
await _initAutoBackup();
runApp(MyApp(appProvider: appProvider));
}
/// 初始化自动备份
Future<void> _initAutoBackup() async {
try {
// 初始化本地自动备份
final isLocalAutoBackupEnabled = await AutoBackupService.instance.getEnabled();
if (isLocalAutoBackupEnabled) {
await AutoBackupService.instance.start();
}
} catch (e) {
print('初始化自动备份失败: $e');
}
}
class MyApp extends StatelessWidget {
final AppProvider appProvider;
const MyApp({super.key, required this.appProvider});
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider.value(value: appProvider),
],
child: MaterialApp(
title: 'MookNote',
debugShowCheckedModeBanner: false,
theme: AppTheme.lightTheme,
darkTheme: AppTheme.darkTheme,
themeMode: ThemeMode.system,
home: const HomePage(),
onGenerateRoute: AppRouter.generateRoute,
),
);
}
}
/// 用于预览 MyApp 的 Widget
/// 添加 @Preview 注解
@Preview(name: "MookNote App Preview")
Widget previewMyApp() {
final appProvider = AppProvider();
return MultiProvider(
providers: [
ChangeNotifierProvider.value(value: appProvider),
],
child: MyApp(appProvider: appProvider),
);
}