import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../providers/auth_provider.dart'; class RegisterScreen extends StatefulWidget { const RegisterScreen({super.key}); @override State createState() => _RegisterScreenState(); } class _RegisterScreenState extends State { final _formKey = GlobalKey(); final _nameController = TextEditingController(); final _emailController = TextEditingController(); final _passwordController = TextEditingController(); final _confirmPasswordController = TextEditingController(); @override void dispose() { _nameController.dispose(); _emailController.dispose(); _passwordController.dispose(); _confirmPasswordController.dispose(); super.dispose(); } void _register() async { if (_formKey.currentState!.validate()) { final authProvider = Provider.of(context, listen: false); final success = await authProvider.register( _nameController.text, _emailController.text, _passwordController.text, _confirmPasswordController.text, ); if (success) { if (mounted) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Compte créé avec succès !')), ); // On vide la pile et on retourne au menu principal (HomeScreen) Navigator.of(context).popUntil((route) => route.isFirst); } } else { if (mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(authProvider.errorMessage ?? 'Échec de l\'inscription')), ); } } } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Inscription CESIZen')), body: SingleChildScrollView( padding: const EdgeInsets.all(16.0), child: Form( key: _formKey, child: Column( children: [ const SizedBox(height: 20), TextFormField( controller: _nameController, decoration: const InputDecoration( labelText: 'Nom complet', border: OutlineInputBorder(), prefixIcon: Icon(Icons.person), ), validator: (value) => value == null || value.isEmpty ? 'Entrez votre nom' : null, ), const SizedBox(height: 16), TextFormField( controller: _emailController, decoration: const InputDecoration( labelText: 'Email', border: OutlineInputBorder(), prefixIcon: Icon(Icons.email), ), keyboardType: TextInputType.emailAddress, validator: (value) => value == null || !value.contains('@') ? 'Email invalide' : 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) => value == null || value.length < 8 ? '8 caractères minimum' : null, ), const SizedBox(height: 16), TextFormField( controller: _confirmPasswordController, decoration: const InputDecoration( labelText: 'Confirmer le mot de passe', border: OutlineInputBorder(), prefixIcon: Icon(Icons.lock_outline), ), obscureText: true, validator: (value) { if (value != _passwordController.text) return 'Les mots de passe ne correspondent pas'; return null; }, ), const SizedBox(height: 24), Consumer( builder: (context, auth, child) { return auth.isLoading ? const CircularProgressIndicator() : ElevatedButton( onPressed: _register, style: ElevatedButton.styleFrom( minimumSize: const Size.fromHeight(50), ), child: const Text('S\'inscrire'), ); }, ), ], ), ), ), ); } }