0

I recently upgraded a Flutter project and all its dependencies.

Earlier I was using bloc: ^6.1.1 which is now upgraded to bloc: ^8.0.1. But transformEvents was removed in 8.0.0 version which was being used like this in the code.

  @override
  Stream<Transition<LoginEvent, LoginState>> transformEvents(
    Stream<LoginEvent> events,
    transitionFn,
  ) {
    final observableStream = events;
    final nonDebounceStream = observableStream.where((event) {
      return (event is! EmailChanged && event is! PasswordChanged);
    });
    final debounceStream = observableStream.where((event) {
      return (event is EmailChanged || event is PasswordChanged);
    }).debounceTime(Duration(milliseconds: 500));
    return super.transformEvents(
        nonDebounceStream.mergeWith([debounceStream]), transitionFn);
  }

I checked and it was removed in favour of EventTransformer. Now I'm having issues in understanding how transformEvents will be replaced with it.

I checked online but couldn't make it work. Any help would be great. Thanks!

Bhawna Saroha
  • 603
  • 1
  • 11
  • 28

1 Answers1

0

You should provide a custom EventTransformer instead of the deprecated transformEvents. Please see this issue for more details and examples - https://github.com/felangel/bloc/issues/2915

Your code should look like:

  EventTransformer<LoginEvent> transform<LoginEvent>(Duration duration) {
    return (events, mapper) => events.debounceTime(duration).flatMap(mapper); 
  }

Mapper is an instance of EventMapper (your event handler).

Alex Verbitski
  • 499
  • 3
  • 12