SignalImpl<T> class

Implementation of Signal that holds a value and notifies subscribers when it changes.

This is the concrete implementation of the Signal interface. Signals are the foundation of the reactive system. They store state and automatically track dependencies when accessed within reactive contexts.

See Signal for the public interface and usage examples.

Example:

final counter = Signal(0);

// Read the value
print(counter.value); // 0

// Update the value
counter.value = 1;

// Use in computed values
final doubled = Computed(() => counter.value * 2);
Inheritance
Implemented types
Mixed-in types
Available extensions

Constructors

SignalImpl(T? value, {JoltDebugFn? onDebug})
Creates a new signal with the given initial value.

Properties

cachedValue ↔ T?
getter/setter pairinherited
deps Link?
First dependency link in the chain.
getter/setter pairinherited
depsTail Link?
Last dependency link in the chain.
getter/setter pairinherited
flags int
Reactive flags for this node.
getter/setter pairinherited
hashCode int
The hash code for this object.
no setterinherited
isDisposed bool
Whether this node has been disposed.
no setterinherited
listenable JoltValueListenable<T>

Available on Readonly<T>, provided by the JoltValueListenableExtension extension

Converts this Jolt value to a Flutter ValueListenable.
no setter
notifier JoltValueNotifier<T>

Available on Readonly<T>, provided by the JoltValueNotifierExtension extension

Converts this Jolt value to a Flutter ValueNotifier.
no setter
peek → T
Returns the current value without establishing a reactive dependency.
no setteroverride
pendingValue ↔ T?
getter/setter pairinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
stream Stream<T>

Available on ReadonlyNode<T>, provided by the JoltReadonlyExtension extension

Converts this reactive value to a broadcast stream.
no setter
subs Link?
First subscriber link in the chain.
getter/setter pairinherited
subsTail Link?
Last subscriber link in the chain.
getter/setter pairinherited
value ↔ T
Returns the current value and establishes a reactive dependency.
getter/setter pairoverride

Methods

dispose() → void
Disposes this node and cleans up resources.
inherited
get() → T
Returns the current value and establishes a reactive dependency.
override
listen(void onData(T event)?, {Function? onError, void onDone()?, bool? cancelOnError, bool immediately = false}) StreamSubscription<T>

Available on ReadonlyNode<T>, provided by the JoltReadonlyExtension extension

Creates a stream subscription that listens to changes in this reactive value.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notify() → void
Manually notifies all subscribers that this signal has changed.
override
onDispose() → void
Disposes the signal and cleans up resources.
override
readonly() ReadonlySignal<T>

Available on Signal<T>, provided by the JoltSignalExtension extension

Returns a read-only view of this signal.
set(T value) → T
Sets a new value for the signal and notifies subscribers when it changes.
override
toString() String
A string representation of this object.
inherited
until(bool predicate(T value)) Future<T>

Available on ReadonlyNode<T>, provided by the JoltReadonlyExtension extension

Waits until the reactive value satisfies a predicate condition.
update(T updater(T value)) → T

Available on WritableNode<T>, provided by the JoltWritableExtension extension

Updates the value using an updater function based on the current value.

Operators

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