ThumperBloc<E> class

ThumperBloc maps ThumperEvent to ThumperState

The events are things like paused, resumed, increased, decreased - things one might do to a thumper. The state is the thumper frequency, the thumpCount, the power setting (reset, idle or running), and some value of E from an iterable, e.g. a list of fruits, or some arbitrarily complex state machine.

This bloc contains and manages a timer that sends events to this (the bloc), so as to emit states at a particular frequency. The bloc's constructor accepts a factory function to make the timer.

Each state contains an E. To get them, the Bloc requires an Iterable

Constructors

ThumperBloc(Iterable<E> _iterable, Iterator<E> _iterator, Spectrum _spectrum, Stream<bool> _timerFactoryFunc(Frequency), int autoThumpLimit, Logger _log)
ThumperBloc accepts
ThumperBloc.fromArgs(Iterable<E> iterable, Spectrum sp, Stream<bool> sf(Frequency), int autoThumpLimit, Logger logger)
Set the iterator correctly.
factory
ThumperBloc.fromIterable(Iterable<E> iterable)
Make a ThumperBloc] from an iterable and a reasonable default spectrum.
factory

Properties

autoThumpLimit int
Automatically pause automatic iteration when this limit hit.
final
hashCode int
The hash code for this object.
no setterinherited
initialState ThumperState<E>
no setter
isClosed bool
Whether the bloc is closed.
no setterinherited
numDivisions int
The number of divisions that a slider widget would need to represent the set of frequencies available.
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
state ThumperState<E>
The current state.
no setterinherited
stream Stream<ThumperState<E>>
The current stream of states.
no setterinherited

Methods

add(ThumperEvent event) → void
Notifies the Bloc of a new event which triggers all corresponding EventHandler instances.
inherited
addError(Object error, [StackTrace? stackTrace]) → void
Reports an error which triggers onError with an optional StackTrace.
inherited
close() Future<void>
Closes the event and state Streams. This method should be called when a Bloc is no longer needed. Once close is called, events that are added will not be processed. In addition, if close is called while events are still being processed, the Bloc will finish processing the pending events.
emit(ThumperState<E> 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
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
on<E extends Event>(EventHandler<E, ThumperState<E>> handler, {EventTransformer<E>? transformer}) → void
Register event handler for an event of type E. There should only ever be one event handler per event type E.
inherited
onChange(Change<ThumperState<E>> 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 cubit is updated. onChange is a great spot to add logging/analytics for a specific cubit.
inherited
onError(Object error, StackTrace stackTrace) → void
Called whenever an error occurs and notifies BlocObserver.onError.
inherited
onEvent(ThumperEvent event) → void
Called whenever an event is added to the Bloc. A great spot to add logging/analytics at the individual Bloc level.
inherited
onTransition(Transition<ThumperEvent, ThumperState<E>> transition) → void
Called whenever a transition occurs with the given transition. A transition occurs when a new event is added and a new state is emitted from a corresponding EventHandler.
inherited
reactToFrequencyValue(double value) → void
Use this to tell the thumper that the frequency should change.
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

makeTimerWithFrequency(Frequency f) Stream<bool>
Makes a stream that can be used to control the rate of automatic thumps.