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, ); } }