81 lines
2.3 KiB
Dart
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;
|
|
}
|
|
}
|