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
-
- Signal<
T>
- Signal<
- 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<
Converts this Jolt value to a Flutter ValueListenable.T> , provided by the JoltValueListenableExtension extensionno setter -
notifier
→ JoltValueNotifier<
T> -
Available on Readonly<
Converts this Jolt value to a Flutter ValueNotifier.T> , provided by the JoltValueNotifierExtension extensionno 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<
Converts this reactive value to a broadcast stream.T> , provided by the JoltReadonlyExtension extensionno 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<
Creates a stream subscription that listens to changes in this reactive value.T> , provided by the JoltReadonlyExtension extension -
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<
Returns a read-only view of this signal.T> , provided by the JoltSignalExtension extension -
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<
Waits until the reactive value satisfies a predicate condition.T> , provided by the JoltReadonlyExtension extension -
update(
T updater(T value)) → T -
Available on WritableNode<
Updates the value using an updater function based on the current value.T> , provided by the JoltWritableExtension extension
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited