import 'package:flutter/material.dart'; import 'package:firebase_auth/firebase_auth.dart'; import '../providers/local_auth_provider.dart'; import 'package:provider/provider.dart'; class LoginViewModel extends ChangeNotifier { final TextEditingController emailController = TextEditingController(); final TextEditingController passwordController = TextEditingController(); String errorMessage = ''; bool isLoading = false; bool obscurePassword = true; bool highlightPasswordField = false; bool highlightEmailField = false; void togglePasswordVisibility() { obscurePassword = !obscurePassword; notifyListeners(); } Future signIn(BuildContext context) async { final localAuthProvider = Provider.of(context, listen: false); isLoading = true; errorMessage = ''; highlightPasswordField = false; highlightEmailField = false; notifyListeners(); try { await localAuthProvider.signInWithEmailAndPassword( emailController.text.trim(), passwordController.text); print('User signed in'); // Vérifier si le contexte est toujours valide if (context.mounted) { // Utiliser pushReplacementNamed pour une transition propre Navigator.of(context, rootNavigator: true) .pushReplacementNamed('/calendar'); } } on FirebaseAuthException catch (e) { isLoading = false; // Gérer les erreurs... notifyListeners(); } finally { // S'assurer que isLoading est remis à false même en cas d'erreur inattendue isLoading = false; notifyListeners(); } } @override void dispose() { emailController.dispose(); passwordController.dispose(); super.dispose(); } }