// Author: fruit.com.cn import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'core/config/locale_controller.dart'; import 'core/data/repositories/catalog_repository.dart'; import 'core/data/repositories/engagement_repository.dart'; import 'core/data/services/catalog_controller.dart'; import 'core/data/services/engagement_controller.dart'; import 'core/data/services/playback_session.dart'; import 'core/data/services/video_player_port.dart'; import 'l10n/app_localizations.dart'; import 'pages/home/home_view.dart'; class LumaDramaApp extends StatelessWidget { const LumaDramaApp({super.key, this.playerFactory = VideoPlayerPort.new}); final PlayerFactory playerFactory; @override Widget build(BuildContext context) { return MultiProvider( providers: [ Provider(create: (_) => PlaybackCoordinator()), Provider(create: (_) => playerFactory), ChangeNotifierProvider( create: (_) => CatalogController(DemoCatalogRepository())..load(), ), ChangeNotifierProvider(create: (_) => LocaleController()..load()), ChangeNotifierProvider( create: (_) => EngagementController(SharedPreferencesEngagementRepository()) ..load(), ), ], child: Consumer( builder: (context, locale, _) => MaterialApp( onGenerateTitle: (context) => AppLocalizations.of(context)!.appName, locale: locale.locale, supportedLocales: AppLocalizations.supportedLocales, localizationsDelegates: AppLocalizations.localizationsDelegates, localeResolutionCallback: (deviceLocale, supported) { final resolved = locale.locale ?? deviceLocale; if (resolved == null) return supported.first; for (final item in supported) { if (item.languageCode == resolved.languageCode) return item; } return supported.first; }, debugShowCheckedModeBanner: false, themeMode: ThemeMode.system, theme: ThemeData( useMaterial3: true, colorScheme: ColorScheme.fromSeed( seedColor: const Color(0xFF6D4AFF), ), scaffoldBackgroundColor: const Color(0xFFF8F7FC), ), darkTheme: ThemeData( useMaterial3: true, colorScheme: ColorScheme.fromSeed( seedColor: const Color(0xFF9B86FF), brightness: Brightness.dark, ), scaffoldBackgroundColor: const Color(0xFF101019), ), home: const HomePage(), ), ), ); } }