uaestats_fe/lib/main.dart
2024-10-28 16:45:11 +05:30

81 lines
2.3 KiB
Dart

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