Ninad7N
Ninad7N

Reputation: 726

Flutter bloc event not getting called

Event is getting called on button onPressed

BlocProvider.of<ProfileBloc>(context).add(FetchProfile());

I am very new to bloc state management, please help me with this issue. version flutter_bloc: ^8.0.1, just wanna try if its possible with the newer version.

class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
  AuthRepo authRepo;
  @override
  ProfileBloc(ProfileState initialState, {required this.authRepo})
      : super(ProfileLoading()) {
    on<FetchProfile>((event, emit) async {
      return await fetchProfileEvent(event, emit);
    });
  }

  Future<void> fetchProfileEvent(
      FetchProfile event, Emitter<ProfileState> emit) async {
    log("$event", name: "eventToState");

    emit(ProfileLoading());
    try {
      await authRepo.getProfileCall().then(
        (value) {
          log("$value", name: 'FetchProfile');
          if (value != 'failed') {
            emit(ProfileLoaded(userData: userProfileModelFromJson(value)));
          } else {
            emit(ProfileLoaded(userData: null));
          }
        },
      );
    } catch (e) {
      log("$e", name: "ProfileBloc : FetchProfile");
      emit(ProfileError());
    }
  }
} 




  

Upvotes: 0

Views: 1054

Answers (1)

Sulaymon Ne&#39;matov
Sulaymon Ne&#39;matov

Reputation: 448

Try it like this:

class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
  AuthRepo authRepo;
  @override
  ProfileBloc({required this.authRepo})
      : super(ProfileLoading()) {
    on<FetchProfile>(fetchProfileEvent);
  }

  Future<void> fetchProfileEvent(
      FetchProfile event, Emitter<ProfileState> emit) async {
    log("$event", name: "eventToState");

    emit(ProfileLoading());
    try {
      final value = await authRepo.getProfileCall();
      log("$value", name: 'FetchProfile');
      if (value != 'failed') {
        emit(ProfileLoaded(userData: userProfileModelFromJson(value)));
      } else {
        emit(ProfileLoaded(userData: null));
      }
    } catch (e) {
      log("$e", name: "ProfileBloc : FetchProfile");
      emit(ProfileError());
    }
  }
}

Upvotes: 1

Related Questions