mobile-eda/lib/main.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,
);
}
}