PersistSignal<T> class abstract interface

Interface for signals that persist their value to external storage.

PersistSignal automatically saves its value to external storage whenever it changes and loads the initial value from storage when created. It supports both synchronous and asynchronous read/write operations.

Example:

PersistSignal<String> theme = PersistSignal(
  initialValue: () => 'light',
  read: () => SharedPreferences.getInstance()
    .then((prefs) => prefs.getString('theme') ?? 'light'),
  write: (value) => SharedPreferences.getInstance()
    .then((prefs) => prefs.setString('theme', value)),
);

theme.value = 'dark'; // Automatically saved to storage
Implemented types
Available extensions

Constructors

PersistSignal({required FutureOr<T> read(), required FutureOr<void> write(T value), T initialValue()?, bool lazy, Duration writeDelay, JoltDebugFn? onDebug})
Creates a persistent signal with the given configuration.
factory
PersistSignal.lazy({required FutureOr<T> read(), required FutureOr<void> write(T value), T initialValue()?, Duration writeDelay = Duration.zero, JoltDebugFn? onDebug})
Creates a lazy persistent signal that loads its value on first access.
factory

Properties

hashCode int
The hash code for this object.
no setterinherited
hasInitialized bool
no setter
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
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 ReadonlyNode<T>, provided by the JoltReadonlyExtension 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

dispose() FutureOr<void>
Dispose this object and clean up its resources.
inherited
ensure(FutureOr<void> fn()?) Future<void>
get() → T
Gets the current value and establishes a reactive dependency.
inherited
getEnsured() Future<T>
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 value has changed.
inherited
onDispose() → void
Called when the node is being disposed.
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
Sets a new value for this reactive value.
inherited
setEnsured(T value, {bool optimistic = false}) Future<bool>
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