Files

56 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_stripe/flutter_stripe.dart';
import 'core/config/app_config.dart';
import 'core/platform/app_platform.dart';
import 'core/time/server_time.dart';
import 'core/time/server_time_sync.dart';
import 'core/router/app_router.dart';
import 'core/theme/app_theme.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
if (!isMobilePlatformSupported) {
throw UnsupportedError(
'Laverie Mobile cible Android et iOS uniquement (pas de web Flutter).',
);
}
await ServerTime.initialize();
await syncServerTimezone();
if (kStripePublishableKey.isNotEmpty) {
Stripe.publishableKey = kStripePublishableKey;
await Stripe.instance.applySettings();
}
runApp(const ProviderScope(child: LaverieApp()));
}
/// Point d'entrée de l'application mobile Laverie Connectée.
class LaverieApp extends ConsumerWidget {
const LaverieApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final router = ref.watch(appRouterProvider);
return MaterialApp.router(
title: 'Laverie Connectée',
debugShowCheckedModeBanner: false,
theme: AppTheme.light,
locale: const Locale('fr', 'FR'),
supportedLocales: const [Locale('fr', 'FR')],
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
routerConfig: router,
);
}
}