ionic-planb-logistic-app-fl.../lib/main.dart

76 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'theme.dart';
import 'providers/providers.dart';
import 'pages/login_page.dart';
import 'pages/routes_page.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeLeft,
DeviceOrientation.landscapeRight,
]);
runApp(
const ProviderScope(
child: PlanBLogisticApp(),
),
);
}
class PlanBLogisticApp extends ConsumerWidget {
const PlanBLogisticApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final language = ref.watch(languageProvider);
return MaterialApp(
title: 'Plan B Logistics',
theme: MaterialTheme(const TextTheme()).light(),
darkTheme: MaterialTheme(const TextTheme()).dark(),
themeMode: ThemeMode.dark,
locale: Locale(language),
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [
Locale('en', ''),
Locale('fr', ''),
],
home: const AppHome(),
);
}
}
class AppHome extends ConsumerWidget {
const AppHome({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final isAuthenticatedAsync = ref.watch(isAuthenticatedProvider);
return isAuthenticatedAsync.when(
data: (isAuthenticated) {
if (isAuthenticated) {
return const RoutesPage();
} else {
return const LoginPage();
}
},
loading: () => const Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
),
error: (error, stackTrace) => const LoginPage(),
);
}
}