Agregar el valor name en la llamada a initializeApp . Es importante que los estudiantes sepan que el parametro name se puede usar cuando queremos usar multiples apps de firebase en un mismo proyecto.
Los flujos de login y registro deben mostrar un dialogo de error si estos fallan. En donde el dialogo debe estar conformado por un icono y un mensaje dependiendo del tipo de error (network, invalid-credentials, user not found, user blocked, etc).
IMPORTANTE: Usar record types para mostrar el icono y el mesaje de error
Ejemplo
Future<void> _signIn() async {
final failure = await _signInWithEmail(email, password);
if(failure ==null ){
/// redirect to home
return;
}
final mapper = switch(failure){
InvalidCredentialsFailure() => (icon: Icons.error, message: 'Invalid password'),
.
.
.
UnknownFailure() => (icon: Icons.unknown_error, message:'Unknown error')
};
}
Future<AuthFailure?> _signInWithEmail(String email, String password) async {
try {
final credentials = await _firebaseAuth.signInWithEmailAndPassword(
email: email,
password: password,
);
final user = credentials.user;
return null; // success
} on FirebaseAuthException catch (e) {
return switch(e.type){
/// return the error type as a typed data
'firebase/invalid-credentials' : InvalidCredentialsFailure(),
- => UnknownFailure(),
} ;
} catch (e){
return UnknownFailure()
}
}
sealed class AuthFailure{}
class NetworkFailure extends AuthFailure{}
class UserNotFoundFailure extends AuthFailure{}
class InvalidCredentialsFailure extends AuthFailure{}
class UserBlockedFailure extends AuthFailure{}
class UnknownFailure extends AuthFailure{}
en el archivo main.dart se debe usar asycn y await en la función main
Agregar el valor
name
en la llamada ainitializeApp
. Es importante que los estudiantes sepan que el parametro name se puede usar cuando queremos usar multiples apps de firebase en un mismo proyecto.Los flujos de login y registro deben mostrar un dialogo de error si estos fallan. En donde el dialogo debe estar conformado por un icono y un mensaje dependiendo del tipo de error (network, invalid-credentials, user not found, user blocked, etc).
IMPORTANTE: Usar record types para mostrar el icono y el mesaje de error
Ejemplo