|
- // lib/main.dart
- import 'dart:io';
- import 'package:flutter/material.dart';
-
- // --- IMPORTS MANQUANTS AJOUTÉS ---
- import 'package:social_content_creator/repositories/ai_repository.dart';
- // Les autres imports d'écrans sont corrects
- import 'package:social_content_creator/presentation/screens/ai_enhancement/ai_enhancement_screen.dart';
- import 'package:social_content_creator/presentation/screens/export/export_screen.dart';
- import 'package:social_content_creator/presentation/screens/home/login_screen.dart';
- import 'package:social_content_creator/presentation/screens/home/home_screen.dart';
- import 'package:social_content_creator/presentation/screens/image_preview/image_preview_screen.dart';
- import 'package:social_content_creator/presentation/screens/media_picker/media_picker_screen.dart';
- import 'package:social_content_creator/presentation/screens/post_preview/post_preview_screen.dart';
- import 'package:social_content_creator/presentation/screens/post_refinement/post_refinement_screen.dart';
- import 'package:social_content_creator/presentation/screens/profile_setup/profile_setup_screen.dart';
- import 'package:social_content_creator/presentation/screens/text_generation/text_generation_screen.dart';
- import 'package:social_content_creator/routes/app_routes.dart';
-
- void main() {
- runApp(const MyApp());
- }
-
- class MyApp extends StatelessWidget {
- const MyApp({super.key});
- static const bool _devSkipLogin = true;
-
- @override
- Widget build(BuildContext context) {
- final Color seedColor = Colors.blue;
- return MaterialApp(
- title: 'Social Content Creator',
- theme: ThemeData(
- colorScheme: ColorScheme.fromSeed(
- seedColor: seedColor,
- brightness: Brightness.light,
- ),
- useMaterial3: true,
- ),
- darkTheme: ThemeData(
- colorScheme: ColorScheme.fromSeed(
- seedColor: seedColor,
- brightness: Brightness.dark,
- ),
- useMaterial3: true,
- ),
- themeMode: ThemeMode.system,
- debugShowCheckedModeBanner: false,
- initialRoute: _devSkipLogin ? AppRoutes.home : AppRoutes.login,
- // --- GESTIONNAIRE DE ROUTES ENTIÈREMENT CORRIGÉ ET COMPLÉTÉ ---
- onGenerateRoute: (settings) {
- switch (settings.name) {
- // --- Routes simples sans arguments ---
- case '/':
- case AppRoutes.login:
- return MaterialPageRoute(builder: (_) => const LoginScreen());
- case AppRoutes.home:
- return MaterialPageRoute(builder: (_) => const HomeScreen());
- case AppRoutes.profileSetup:
- return MaterialPageRoute(builder: (_) => const ProfileSetupScreen());
- case AppRoutes.mediaPicker:
- return MaterialPageRoute(builder: (_) => const MediaPickerScreen());
- case AppRoutes.export:
- return MaterialPageRoute(builder: (_) => const ExportScreen());
-
- // --- Routes avec arguments ---
- case AppRoutes.aiEnhancement:
- if (settings.arguments is Map<String, dynamic>) {
- final args = settings.arguments as Map<String, dynamic>;
- if (args.containsKey('image') &&
- args['image'] is File &&
- args.containsKey('prompt') &&
- args['prompt'] is String) {
- return MaterialPageRoute(
- builder: (_) => AiEnhancementScreen(
- image: args['image']!,
- prompt: args['prompt']!,
- ),
- );
- }
- }
- return _errorRoute("Arguments invalides pour AiEnhancementScreen.");
-
- case AppRoutes.imagePreview:
- if (settings.arguments is String) {
- final imageBase64 = settings.arguments as String;
- return MaterialPageRoute(
- builder: (_) => ImagePreviewScreen(imageBase64: imageBase64),
- );
- }
- return _errorRoute("Argument (String) invalide pour ImagePreviewScreen");
-
- case AppRoutes.textGeneration:
- final args = settings.arguments;
- if (args is Map<String, dynamic>) {
- final imageBase64 = args['imageBase64'] as String?;
- final aiRepository = args['aiRepository'] as AiRepository?;
-
- if (imageBase64 != null && aiRepository != null) {
- return MaterialPageRoute(
- builder: (_) => TextGenerationScreen(
- arguments: TextGenerationScreenArguments(
- imageBase64: imageBase64,
- aiRepository: aiRepository,
- ),
- ),
- );
- }
- }
- // L'erreur était ici : il manquait le cas de fallback
- return _errorRoute("Arguments invalides pour TextGenerationScreen.");
-
- // --- ROUTE MANQUANTE AJOUTÉE ---
- case AppRoutes.postRefinement:
- if (settings.arguments is PostRefinementScreenArguments) {
- final args = settings.arguments as PostRefinementScreenArguments;
- return MaterialPageRoute(
- builder: (_) => PostRefinementScreen(arguments: args),
- );
- }
- return _errorRoute("Arguments (PostRefinementScreenArguments) invalides pour PostRefinementScreen.");
-
- // --- ROUTE MANQUANTE AJOUTÉE ---
- case AppRoutes.postPreview:
- if (settings.arguments is PostPreviewArguments) {
- final args = settings.arguments as PostPreviewArguments;
- return MaterialPageRoute(
- builder: (_) => PostPreviewScreen(arguments: args),
- );
- }
- return _errorRoute("Arguments (PostPreviewArguments) invalides pour PostPreviewScreen.");
-
- default:
- return _errorRoute("Route non trouvée: ${settings.name}");
- }
- },
- );
- }
-
- // Méthode helper pour afficher une page d'erreur propre
- MaterialPageRoute _errorRoute(String message) {
- return MaterialPageRoute(
- builder: (_) => Scaffold(
- appBar: AppBar(title: const Text('Erreur de Navigation')),
- body: Center(
- child: Padding(
- padding: const EdgeInsets.all(16.0),
- child: Text(message, textAlign: TextAlign.center),
- )),
- ),
- );
- }
- }
|