Ad

How To Implement Debouncer For Events With 'onEvent'?

- 1 answer

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,
      );
Ad

Answer

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!

Ad
source: stackoverflow.com
Ad