import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../providers/auth_provider.dart'; import 'register_screen.dart'; class LoginScreen extends StatefulWidget { const LoginScreen({super.key}); @override State createState() => _LoginScreenState(); } class _LoginScreenState extends State { final _formKey = GlobalKey(); final _emailController = TextEditingController(); final _passwordController = TextEditingController(); @override void dispose() { _emailController.dispose(); _passwordController.dispose(); super.dispose(); } void _login() async { if (_formKey.currentState!.validate()) { final authProvider = Provider.of(context, listen: false); final success = await authProvider.login( _emailController.text, _passwordController.text, ); if (success) { // Rediriger vers l'accueil ou le dashboard if (mounted) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Connexion réussie')), ); Navigator.of(context).pop(); // Retourne à l'écran précédent (HomeScreen) } } else { if (mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(authProvider.errorMessage ?? 'Échec de la connexion')), ); } } } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Connexion CESIZen')), body: Padding( padding: const EdgeInsets.all(16.0), child: Form( key: _formKey, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Text( 'Bienvenue sur CESIZen', style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold), ), const SizedBox(height: 32), TextFormField( controller: _emailController, decoration: const InputDecoration( labelText: 'Email', border: OutlineInputBorder(), prefixIcon: Icon(Icons.email), ), keyboardType: TextInputType.emailAddress, validator: (value) { if (value == null || value.isEmpty) return 'Veuillez entrer votre email'; if (!value.contains('@')) return 'Email invalide'; return null; }, ), const SizedBox(height: 16), TextFormField( controller: _passwordController, decoration: const InputDecoration( labelText: 'Mot de passe', border: OutlineInputBorder(), prefixIcon: Icon(Icons.lock), ), obscureText: true, validator: (value) { if (value == null || value.isEmpty) return 'Veuillez entrer votre mot de passe'; return null; }, ), const SizedBox(height: 24), Consumer( builder: (context, auth, child) { return auth.isLoading ? const CircularProgressIndicator() : ElevatedButton( onPressed: _login, style: ElevatedButton.styleFrom( minimumSize: const Size.fromHeight(50), ), child: const Text('Se connecter'), ); }, ), TextButton( onPressed: () { Navigator.push( context, MaterialPageRoute(builder: (context) => const RegisterScreen()), ); }, child: const Text("Pas encore de compte ? S'inscrire"), ), ], ), ), ), ); } }