Controller<Event, State> class Null safety

Takes a Stream of Events as input and transforms them into a Stream of States as output.

Available Extensions


Controller(State initialState)
Takes a Stream of Events as input and transforms them into a Stream of States as output.


hashCode int
The hash code for this object. [...]
read-only, inherited
hasListeners bool
read-only, inherited
initialized bool
Checks whether the controller has already been initialized.
read-only, inherited
isClosed bool
Checks whether the controller has already been closed.
read-only, inherited
listeners int
read-only, inherited
onDelete InternalFinalCallback<void>
Internal callback that starts the cycle of this controller.
final, inherited
onStart InternalFinalCallback<void>
Called at the exact moment the widget is allocated in memory. It uses an internal "callable" type, to avoid any @overrides in subclases. This method should be internal and is required to define the lifetime cycle of the subclass.
final, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
rxState Rx<State>
The current rxState.
late, final, inherited
state → State
The current state.
read-only, inherited
stream Stream<State>
The current state stream.
read-only, inherited


$configureLifeCycle() → void
add(Event event) → void
Notifies the Controller of a new event which triggers mapEventToState. If onClose has already been called, any subsequent calls to add will be ignored and will not result in any subsequent state changes.
addError(Object error, [StackTrace? stackTrace]) → void
Reports an error which triggers onError with an optional StackTrace.
@mustCallSuper, inherited
addListener(GetStateUpdate listener) Disposer
Register a closure to be called when the object notifies its listeners.
addListenerId(Object? key, GetStateUpdate listener) Disposer
dispose() → void
@mustCallSuper, inherited
disposeId(Object id) → void
To dispose an id from future updates(), this ids are registered by GetBuilder() or similar, so is a way to unlink the state change with the Widget from the Controller.
emit(State state) → void
emit should never be used outside of tests. [...]
mapEventToState(Event event) Stream<State>
Must be implemented when a class extends Controller. mapEventToState is called whenever an event is added and is responsible for converting that event into a new state. mapEventToState can yield zero, one, or multiple states for an event.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
notifyChildrens() → void
@protected, inherited
onChange(StateChange<State> change) → void
Called whenever a change occurs with the given change. A change occurs when a new state is emitted. onChange is called before the state of the StateController is updated. onChange is a great spot to add logging/analytics for a specific StateController. [...]
@mustCallSuper, inherited
onClose() Future<void>
Closes the event and state Streams. This method should be called when a Controller is no longer needed. Once onClose is called, events that are added will not be processed. In addition, if onClose is called while events are still being processed, the Controller will finish processing the pending events.
onError(Object error, StackTrace stackTrace) → void
Called whenever an error occurs and notifies ObserverController.onError. [...]
@mustCallSuper, @protected, inherited
onEvent(Event event) → void
Called whenever an event is added to the Controller. A great spot to add logging/analytics at the individual Controller level. [...]
onInit() → void
Called immediately after the widget is allocated in memory. You might use this to initialize something for the controller.
@mustCallSuper, inherited
onReady() → void
Called 1 frame after onInit(). It is the perfect place to enter navigation events, like snackbar, dialogs, or a new route, or async request.
onTransform(TransformController<Event, State> transition) → void
Called whenever a transition occurs with the given transition. A transition occurs when a new event is added and mapEventToState executed. onTransform is called before a Controller's state has been updated. A great spot to add logging/analytics at the individual Controller level. [...]
refresh() → void
@protected, inherited
refreshGroup(Object id) → void
@protected, inherited
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that the object notifies.
removeListenerId(Object id, VoidCallback listener) → void
toString() String
A string representation of this object. [...]
transformEvents(Stream<Event> events, TransitionFunction<Event, State> transitionFn) Stream<TransformController<Event, State>>
Transforms the events stream along with a transitionFn function into a Stream<Transition>. Events that should be processed by mapEventToState need to be passed to transitionFn. By default asyncExpand is used to ensure all events are processed in the order in which they are received. You can override transformEvents for advanced usage in order to manipulate the frequency and specificity with which mapEventToState is called as well as which events are processed. [...]
transformTransitions(Stream<TransformController<Event, State>> transitions) Stream<TransformController<Event, State>>
Transforms the Stream<Transition> into a new Stream<Transition>. By default transformTransitions returns the incoming Stream<Transition>. You can override transformTransitions for advanced usage in order to manipulate the frequency and specificity at which transitions (state changes) occur. [...]
update([List<Object>? ids, bool condition = true]) → void
Rebuilds GetBuilder each time you call update(); Can take a List of ids, that will only update the matching GetBuilder( id: ), ids can be reused among GetBuilders like group tags. The update will only notify the Widgets, if condition is true.


operator ==(Object other) bool
The equality operator. [...]

Static Properties

observer ObserverController
The current ObserverController instance.
read / write