import 'package:adaptive_theme/adaptive_theme.dart'; import 'package:feature_discovery/feature_discovery.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:hacki/blocs/blocs.dart'; import 'package:hacki/config/custom_router.dart'; import 'package:hacki/config/locator.dart'; import 'package:hacki/cubits/cubits.dart'; import 'package:hacki/screens/screens.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); await setUpLocator(); final savedThemeMode = await AdaptiveTheme.getThemeMode(); print(savedThemeMode); runApp(HackiApp( savedThemeMode: savedThemeMode, )); } class HackiApp extends StatelessWidget { const HackiApp({ Key? key, this.savedThemeMode, }) : super(key: key); final AdaptiveThemeMode? savedThemeMode; static final GlobalKey navigatorKey = GlobalKey(); @override Widget build(BuildContext context) { return AdaptiveTheme( light: ThemeData( primarySwatch: Colors.orange, ), dark: ThemeData( brightness: Brightness.dark, primarySwatch: Colors.orange, ), initial: savedThemeMode ?? AdaptiveThemeMode.system, builder: (theme, darkTheme) { return MultiBlocProvider( providers: [ BlocProvider( create: (context) => StoriesBloc(), ), BlocProvider( lazy: false, create: (context) => AuthBloc(), ), BlocProvider( lazy: false, create: (context) => PreferenceCubit(), ), BlocProvider( lazy: false, create: (context) => HistoryCubit( authBloc: context.read(), ), ), BlocProvider( lazy: false, create: (context) => FavCubit( authBloc: context.read(), ), ), BlocProvider( lazy: false, create: (context) => BlocklistCubit(), ), BlocProvider( lazy: false, create: (context) => SearchCubit(), ), BlocProvider( lazy: false, create: (context) => NotificationCubit( authBloc: context.read(), preferenceCubit: context.read(), ), ), ], child: FeatureDiscovery( child: MaterialApp( title: 'Hacki', debugShowCheckedModeBanner: false, theme: theme, darkTheme: darkTheme, navigatorKey: navigatorKey, onGenerateRoute: CustomRouter.onGenerateRoute, initialRoute: HomeScreen.routeName, ), ), ); }, ); } }