bloc library

A predictable state management library for Dart.

Get started at 🚀


Bloc<Event, State>
Takes a Stream of Events as input and transforms them into a Stream of States as output.
An interface for the core functionality implemented by both Bloc and Cubit.
An interface for observing the behavior of Bloc instances.
A Change represents the change from one State to another. A Change consists of the currentState and nextState.
A Cubit is similar to Bloc but has no notion of events and relies on methods to emit new states.
An Emitter is a class which is capable of emitting new states.
Transition<Event, State>
A Transition is the change from one state to another. Consists of the currentState, an event, and the nextState.


EventHandler<Event, State> = FutureOr<void> Function(Event event, Emitter<State> emit)
An event handler is responsible for reacting to an incoming Event and can emit zero or more states via the Emitter.
EventMapper<Event> = Stream<Event> Function(Event event)
Signature for a function which converts an incoming event into an outbound stream of events. Used when defining custom EventTransformers.
EventTransformer<Event> = Stream<Event> Function(Stream<Event> events, EventMapper<Event> mapper)
Used to change how events are processed. By default events are processed concurrently.
TransitionFunction<Event, State> = Stream<Transition<Event, State>> Function(Event)
@Deprecated - Use on<Event> with an EventTransformer instead. Will be removed in v8.0.0

Exceptions / Errors

Exception thrown when an unhandled error occurs within a bloc.