MainBloc<E extends MainBlocEvent, S extends MainBlocState> class
abstract
A base class for all Blocs in the application.
This class extends BaseBlocDelegate and provides a foundation for creating Blocs with specific event and state types.
Type Parameters:
E: The type of events this Bloc will handle. Must extend MainBlocEvent.S: The type of states this Bloc will emit. Must extend MainBlocState.
Features:
- Built-in loading state management via CommonBloc
- Navigation support via AppNavigator
- Error handling with blocCatch
Usage:
class CounterBloc extends MainBloc<CounterEvent, CounterState> {
CounterBloc() : super(const CounterState.initial()) {
on<Increment>(_onIncrementCounter);
on<Decrement>(_onDecrementCounter);
}
Future<void> _onIncrementCounter(
Increment event, Emitter<CounterState> emit) async {
await blocCatch(
actions: () async {
await Future.delayed(Duration(seconds: 2));
emit(state.copyWith(count: state.count + 1));
},
keyLoading: 'increment',
onError: handleError,
);
}
void _onDecrementCounter(Decrement event, Emitter<CounterState> emit) {
if (state.count > 0) emit(state.copyWith(count: state.count - 1));
}
}
- Inheritance
-
- Object
- BlocBase<
S> - Bloc<
E, S> - BaseBlocDelegate<
E, S> - MainBloc
- Implementers
Constructors
- MainBloc(S initialState)
Properties
- commonBloc ↔ CommonBloc
-
getter/setter pairinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- isClosed → bool
-
Whether the bloc is closed.
no setterinherited
-
getter/setter pairinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- state → S
-
The current state.
no setterinherited
-
stream
→ Stream<
S> -
The current stream of states.
no setterinherited
Methods
-
add(
E event) → void -
Adds an event to the bloc if it's not closed.
inherited
-
addError(
Object error, [StackTrace? stackTrace]) → void -
Reports an
errorwhich triggers onError with an optional StackTrace.inherited -
blocCatch(
{required Future< void> actions(), bool isLoading = true, String keyLoading = LoadingKey.global, Future<void> onError(Object error, StackTrace stackTrace)?, Future<void> onFinally()?}) → Future<void> -
Executes a given asynchronous action within a try-catch block, handling loading states.
inherited
-
catchError(
{required Future< void> actions(), bool isLoading = true, String keyLoading = LoadingKey.global, Future<void> onError(Object error, StackTrace stackTrace)?, Future<void> onFinally()?}) → Future<void> -
Executes a given asynchronous action within a try-catch block, handling loading states.
inherited
-
close(
) → Future< void> -
Closes the
eventandstateStreams. This method should be called when a Bloc is no longer needed. Once close is called,eventsthat are added will not be processed. In addition, if close is called whileeventsare still being processed, the Bloc will finish processing the pendingevents.inherited -
dispose(
) → void -
inherited
-
emit(
S state) → void -
emit is only for internal use and should never be called directly
outside of tests. The Emitter instance provided to each EventHandler
should be used instead.
inherited
-
hideLoading(
{String? key = LoadingKey.global}) → void -
Hides the loading overlay for a specific key.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
on<
E extends Event> (EventHandler< E, S> handler, {EventTransformer<E> ? transformer}) → void -
Register event handler for an event of type
E. There should only ever be one event handler per event typeE.inherited -
onChange(
Change< S> change) → void -
Called whenever a
changeoccurs with the givenchange. Achangeoccurs when a newstateis emitted. onChange is called before thestateof thecubitis updated. onChange is a great spot to add logging/analytics for a specificcubit.inherited -
onDeactivate(
) → void -
onDependenciesChanged(
) → void -
onDone(
E event, [Object? error, StackTrace? stackTrace]) → void -
Called whenever an
eventhandler for a specific Bloc has completed. This may include anerrorandstackTraceif an uncaught exception occurred within the event handler.inherited -
onError(
Object error, StackTrace stackTrace) → void -
Called whenever an
erroroccurs and notifies BlocObserver.onError.inherited -
onEvent(
E event) → void -
Called whenever an
eventis added to the Bloc. A great spot to add logging/analytics at the individual Bloc level.inherited -
onTransition(
Transition< E, S> transition) → void -
Called whenever a
transitionoccurs with the giventransition. Atransitionoccurs when a neweventis added and a new state isemittedfrom a corresponding EventHandler.inherited -
reset(
S initialState) → void -
Resets the bloc to its initial state.
inherited
-
showLoading(
{String? key = LoadingKey.global}) → void -
Shows the loading overlay for a specific key.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited