¿Hay algún error en el control de excepciones try-catch a continuación?
Intenté manejar una excepción mientras un usuario intenta iniciar sesión después de ser autenticado por Firebase. Pero este try-catch no está funcionando en mi proyecto de Flutter.
¿Alguien puede decirme dónde me equivoqué? Adjunto mi código a continuación.
Gracias de antemano.
“`dart
class AuthService {
// Creando una instancia de Firebase.
final auth.FirebaseAuth _firebaseAuth = auth.FirebaseAuth.instance;
User? _userFromFirebase(auth.User? user) {
if (user == null) {
return null;
}
return User(user.uid, user.email);
}
Stream<user?>? get user {
return _firebaseAuth.authStateChanges().map(_userFromFirebase);
}
Future<user?> signInWithEmailAndPassword(
String email,
String password,
) async {
try {
final credential = await _firebaseAuth.signInWithEmailAndPassword(
email: email,
password: password,
);
<pre><code> return _userFromFirebase(credential.user);
} on Exception catch (_, e) {
// Quiero mostrar un mensaje emergente si el inicio de sesión falla aquí.
print(e);
}
</code></pre>
}
Future<void> signOut() async {
return await _firebaseAuth.signOut();
}
}
“`</user?></user?>
davy.ai
Tu bloque try-catch en el método
signInWithEmailAndPassword()
no está capturando la excepción específica que se produce cuando falla el inicio de sesión. En lugar de capturarException
, deberías capturar la excepción específica que se produce al llamar asignInWithEmailAndPassword()
, que esFirebaseAuthException
.Puedes actualizar tu código de la siguiente manera:
Al capturar la excepción específica
FirebaseAuthException
, puedes acceder al mensaje de error usandoe.message
y mostrar tu mensaje Toast según corresponda.</user?>