diff --git a/day21_login_ui_bloc/lib/auth/login/login_bloc.dart b/day21_login_ui_bloc/lib/auth/login/login_bloc.dart index 2a83d37..29f6e2f 100644 --- a/day21_login_ui_bloc/lib/auth/login/login_bloc.dart +++ b/day21_login_ui_bloc/lib/auth/login/login_bloc.dart @@ -5,30 +5,29 @@ import 'package:social_media_app/auth/login/login_event.dart'; import 'package:social_media_app/auth/login/login_state.dart'; class LoginBloc extends Bloc { - final AuthRepository authRepo; + final AuthRepository authRepository; - LoginBloc({this.authRepo}) : super(LoginState()); - - @override - Stream mapEventToState(LoginEvent event) async* { - // Username updated - if (event is LoginUsernameChanged) { - yield state.copyWith(username: event.username); + LoginBloc({required this.authRepository}) : super(LoginState()) { + on(_onLoginUsernameChanged); + on(_onLoginPasswordChanged); + on(_onLoginSubmitted); + } - // Password updated - } else if (event is LoginPasswordChanged) { - yield state.copyWith(password: event.password); + void _onLoginUsernameChanged(LoginUsernameChanged event, Emitter emit) async { + emit(state.copyWith(username: event.username)); + } - // Form submitted - } else if (event is LoginSubmitted) { - yield state.copyWith(formStatus: FormSubmitting()); + void _onLoginPasswordChanged(LoginPasswordChanged event, Emitter emit) async { + emit(state.copyWith(password: event.password)); + } - try { - await authRepo.login(); - yield state.copyWith(formStatus: SubmissionSuccess()); - } catch (e) { - yield state.copyWith(formStatus: SubmissionFailed(e)); - } + void _onLoginSubmitted(LoginSubmitted event, Emitter emit) async { + emit(state.copyWith(formStatus: FormSubmitting())); + try { + await authRepository.login(); + emit(state.copyWith(formStatus: SubmissionSuccess())); + } on Exception catch (e) { + emit(state.copyWith(formStatus: SubmissionFailed(e))); } } }