72 lines
1.9 KiB
Dart
72 lines
1.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
import 'package:isar/isar.dart';
|
|
import 'package:path_provider/path_provider.dart';
|
|
|
|
import 'core/config/app_config.dart';
|
|
import 'core/config/settings_provider.dart';
|
|
import 'core/routes/app_router.dart';
|
|
import 'core/theme/eda_theme.dart';
|
|
import 'data/models/schema.dart';
|
|
|
|
void main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
// 初始化本地数据库
|
|
final dir = await getApplicationDocumentsDirectory();
|
|
Isar.initializeIsarCore(download: true);
|
|
final isar = await Isar.open(
|
|
[SchematicSchema, ProjectSchema, ComponentSchema, SettingsSchema],
|
|
directory: dir.path,
|
|
);
|
|
|
|
// 配置应用
|
|
await AppConfig.init();
|
|
|
|
runApp(
|
|
ProviderScope(
|
|
overrides: [
|
|
isarProvider.overrideWithValue(isar),
|
|
],
|
|
child: MobileEdaApp(),
|
|
),
|
|
);
|
|
}
|
|
|
|
class MobileEdaApp extends ConsumerWidget {
|
|
MobileEdaApp({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final router = ref.watch(routerProvider);
|
|
final settings = ref.watch(settingsProvider);
|
|
final settingsNotifier = ref.read(settingsProvider.notifier);
|
|
|
|
return MaterialApp.router(
|
|
title: 'Mobile EDA',
|
|
debugShowCheckedModeBanner: false,
|
|
|
|
// 国际化配置
|
|
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
|
supportedLocales: AppLocalizations.supportedLocales,
|
|
locale: settings.locale,
|
|
|
|
// 主题配置
|
|
theme: EdaTheme.lightTheme,
|
|
darkTheme: EdaTheme.darkTheme,
|
|
themeMode: settingsNotifier.flutterThemeMode,
|
|
|
|
// RTL 支持
|
|
builder: (context, child) {
|
|
return Directionality(
|
|
textDirection: settings.isRtl ? TextDirection.rtl : TextDirection.ltr,
|
|
child: child!,
|
|
);
|
|
},
|
|
|
|
routerConfig: router,
|
|
);
|
|
}
|
|
}
|