how to implement debouncer for events with 'onEvent'?

345

New in Bloc 7.2.0 https://verygood.ventures/blog/whats-new-in-bloc-v7-2-0

Now it uses transformer!

import 'package:bloc/bloc.dart';
import 'package:stream_transform/stream_transform.dart';

class YourBloc extends Bloc<Event, State> {
  YourBloc() : super(StateInitial()) {

    on<PriceProposalEvent>(_onPriceProposalEvent,
        transformer: debounce(const Duration(milliseconds: 200)));
  }
}
//Debounce query requests
EventTransformer<E> debounce<E>(Duration duration) {
  return (events, mapper) {
    return events.debounce(duration).switchMap(mapper);
  };
}

Hope, it may help ya!

Share:
345
Hamed
Author by

Hamed

Mobile developer with over 9 years of IT experience in analysis, design, and development of various native and multi-platform mobile applications.

Updated on January 01, 2023

Comments

  • Hamed
    Hamed over 1 year

    transformEvents method will be removed in bloc version 8, and we should use onEvent method instead of, how can we implement debounce for events with onEvent?

      @override
      Stream<Transition<PriceProposalEvent, PriceProposalState>> transformEvents(
        Stream<PriceProposalEvent> events,
        TransitionFunction<PriceProposalEvent, PriceProposalState> transitionFn,
      ) =>
          super.transformEvents(
            events.debounceTime(const Duration(milliseconds: 200)),
            transitionFn,
          );