import 'package:external_repos/external_repos.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:uae_stat/config/injector.dart'; import 'package:uae_stat/config/my_router.dart'; import 'package:uae_stat/config/my_theme.dart'; import 'package:uae_stat/config/old_theme.dart'; import 'package:uae_stat/domain/entities/language_locale.dart'; import 'package:uae_stat/domain/use_cases/auth_use_case.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // await (await SharedPreferences.getInstance()).clear(); configureDependencies(); runApp( const ProviderScope( child: MainApp(), ), ); } class MainApp extends ConsumerWidget { const MainApp({super.key}); @override Widget build( BuildContext context, WidgetRef ref, ) { const loading = Material( child: Center( child: CircularProgressIndicator(), ), ); // waits to load preferences (language) // from local storage final languageFinalizedWidget = ref .watch( routerProvider, ) .when( loading: () => loading, error: Error.throwWithStackTrace, data: (data) { final materialApp = MaterialApp.router( debugShowCheckedModeBanner: false, routerConfig: data, supportedLocales: LanguageLocale.values.map( (e) => e.toLocale(), ), localizationsDelegates: GlobalMaterialLocalizations.delegates, theme: ThemeData.from( colorScheme: ColorScheme.fromSeed( seedColor: MyTheme.topicColor( IndicatorTopic.economy, ), ), textTheme: OldTheme.textTheme, ), ); return ColoredBox( color: Colors.white, child: materialApp, ); }, ); // waits to load auth from local storage final authFinalizedWidget = ref .watch( authUseCaseProvider, ) .when( loading: () => loading, error: Error.throwWithStackTrace, data: (data) => languageFinalizedWidget, ); return authFinalizedWidget; } }