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, JoltDebugFn? onDebug})
Creates an asynchronous persistent signal.
factory
PersistSignal.lazyAsync({required Future<T> read(), required FutureOr<void> write(T value), T initialValue()?, Duration? throttle, JoltDebugFn? onDebug})
Creates a lazy asynchronous persistent signal.
factory
PersistSignal.lazySync({required T read(), required FutureOr<void> write(T value), Duration? throttle, JoltDebugFn? onDebug})
Creates a lazy synchronous persistent signal.
factory
PersistSignal.sync({required T read(), required FutureOr<void> write(T value), bool lazy, Duration? throttle, JoltDebugFn? onDebug})
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() → 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)) Future<T>

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

Waits until the value satisfies a condition.
untilWhen<U>(U predicate) Future<T>

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

Waits until the reactive value equals a specific 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