PersistSignal<T> class abstract interface

Signal that persists its value to external storage.

Automatically saves value changes to storage. Supports sync/async reads, lazy loading, and write throttling. Uses a 2-element write queue.

Initialization:

  • Sync signals: initialized immediately (or on first access if lazy)
  • Async signals: must call ensure or getEnsured before writing

Example (sync):

final theme = PersistSignal.sync(
  read: () => prefs.getString('theme') ?? 'light',
  write: (value) => prefs.setString('theme', value),
);
theme.value = 'dark'; // Auto-saved

Example (async):

final theme = PersistSignal.async(
  read: () async => await prefs.getString('theme') ?? 'light',
  write: (value) => prefs.setString('theme', value),
  initialValue: () => 'light',
);
await theme.ensure(); // Wait for init
theme.value = 'dark'; // Auto-saved
Implemented types
Implementers
Available extensions

Constructors

PersistSignal.async({required Future<T> read(), required FutureOr<void> write(T value), T initialValue()?, bool lazy, Duration? throttle, JoltDebugOption? debug})
Creates an asynchronous persistent signal.
factory
PersistSignal.lazyAsync({required Future<T> read(), required FutureOr<void> write(T value), T initialValue()?, Duration? throttle, JoltDebugOption? debug})
Creates a lazy asynchronous persistent signal.
factory
PersistSignal.lazySync({required T read(), required FutureOr<void> write(T value), Duration? throttle, JoltDebugOption? debug})
Creates a lazy synchronous persistent signal.
factory
PersistSignal.sync({required T read(), required FutureOr<void> write(T value), bool lazy, Duration? throttle, JoltDebugOption? debug})
Creates a synchronous persistent signal.
factory

Properties

hashCode → int
The hash code for this object.
no setterinherited
isDisposed → bool
Whether this node has been disposed.
no setterinherited
isInitialized → bool
Whether initialized from storage.
no setter
peek → T
Gets the current value without establishing a reactive dependency.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
stream → Stream<T>

Available on Readable<T>, provided by the JoltUtilsStreamExtension extension

Converts this reactive value to a broadcast stream.
no setter
value ↔ T
Gets the current value and establishes a reactive dependency.
getter/setter pairinherited

Methods

call() → T

Available on Readable<T>, provided by the JoltUtilsReadableExtension extension

Gets the current value (callable syntax).
derived<U>(U computed(T value)) → Computed<U>

Available on Readable<T>, provided by the JoltUtilsReadableExtension extension

Creates a computed value derived from this readable.
dispose() → void
Disposes this node and cleans up resources.
inherited
ensure([FutureOr<void> fn(T value)?]) → Future<void>
Ensures initialization, optionally running a function.
ensureWrite() → Future<void>
Waits for all pending writes to complete.
get() → T

Available on Readable<T>, provided by the JoltUtilsReadableExtension extension

Gets the current value.
getEnsured() → Future<T>
Gets value, ensuring initialization is complete.
listen(void onData(T event)?, {Function? onError, void onDone()?, bool? cancelOnError, bool immediately = false}) → StreamSubscription<T>

Available on Readable<T>, provided by the JoltUtilsStreamExtension extension

Listens to changes in this reactive value.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notify([bool force]) → void
Triggers a change notification without modifying the value.
inherited
readonly() → ReadonlySignal<T>

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

Returns a read-only view of this signal.
set(T value) → T

Available on Writable<T>, provided by the JoltUtilsWritableExtension extension

Sets the value.
toString() → String
A string representation of this object.
inherited
until(bool predicate(T value), {bool? detach}) → Until<T>

Available on ReadableNode<T>, provided by the JoltUtilsUntilExtension extension

Waits until the value satisfies a condition.
untilChanged({bool? detach}) → Until<T>

Available on ReadableNode<T>, provided by the JoltUtilsUntilExtension extension

Waits until the value changes from its current value.
untilWhen<U>(U value, {bool? detach}) → Until<T>

Available on ReadableNode<T>, provided by the JoltUtilsUntilExtension extension

Waits until the reactive value equals value.
update(T updater(T value)) → T

Available on Writable<T>, provided by the JoltUtilsWritableExtension extension

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

Operators

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