HydratedBloc<Event, State> class
abstract
Specialized Bloc which handles initializing the Bloc state based on the persisted state. This allows state to be persisted across hot restarts as well as complete app restarts.
abstract class CounterEvent {}
class CounterIncrementPressed extends CounterEvent {}
class CounterDecrementPressed extends CounterEvent {}
class CounterBloc extends HydratedBloc<CounterEvent, int> {
CounterBloc() : super(0) {
on<CounterIncrementPressed>((event, emit) => emit(state + 1));
on<CounterDecrementPressed>((event, emit) => emit(state - 1));
}
@override
int fromJson(Map<String, dynamic> json) => json['value'] as int;
@override
Map<String, int> toJson(int state) => {'value': state};
}
- Inheritance
- Mixed-in types
-
- HydratedMixin<
State>
- HydratedMixin<
Constructors
- HydratedBloc(State state, {Storage? storage, OnHydrationError onHydrationError = defaultOnHydrationError})
- Specialized Bloc which handles initializing the Bloc state based on the persisted state. This allows state to be persisted across hot restarts as well as complete app restarts.
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- id → String
-
id is used to uniquely identify multiple instances
of the same HydratedBloc type.
In most cases it is not necessary;
however, if you wish to intentionally have multiple instances
of the same HydratedBloc, then you must override id
and return a unique identifier for each HydratedBloc instance
in order to keep the caches independent of each other.
no setterinherited
- isClosed → bool
-
Whether the bloc is closed.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- state → State
-
The current state.
no setterinherited
- storagePrefix → String
-
Storage prefix which can be overridden to provide a custom
storage namespace.
Defaults to runtimeType but should be overridden in cases
where stored data should be resilient to obfuscation, minification
or persist between debug/release builds.
no setterinherited
- storageToken → String
-
storageTokenis used as registration token for hydrated storage. Composed of storagePrefix and id.no setterinherited -
stream
→ Stream<
State> -
The current stream of states.
no setterinherited
Methods
-
add(
Event event) → void -
Notifies the Bloc of a new
eventwhich triggers all corresponding EventHandler instances.inherited -
addError(
Object error, [StackTrace? stackTrace]) → void -
Reports an
errorwhich triggers onError with an optional StackTrace.inherited -
clear(
) → Future< void> -
clear is used to wipe or invalidate the cache of a HydratedBloc.
Calling clear will delete the cached state of the bloc
but will not modify the current state of the bloc.
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 -
emit(
State 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
-
fromJson(
Map< String, dynamic> json) → State? -
Responsible for converting the
Map<String, dynamic>representation of the bloc state into a concrete instance of the bloc state.inherited -
hydrate(
{Storage? storage, OnHydrationError onError = defaultOnHydrationError}) → void -
Populates the internal state storage with the latest state.
This should be called when using the HydratedMixin
directly within the constructor body.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
on<
E extends Event> (EventHandler< E, State> 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< State> 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 -
onDone(
Event 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(
Event 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< Event, State> transition) → void -
Called whenever a
transitionoccurs with the giventransition. Atransitionoccurs when a neweventis added and a new state isemittedfrom a corresponding EventHandler.inherited -
toJson(
State state) → Map< String, dynamic> ? -
Responsible for converting a concrete instance of the bloc state
into the the
Map<String, dynamic>representation.inherited -
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited