Computed<T> class

A reactive class that computes a value on demand and notifies listeners when the value changes.

This class acts as both a ReactiveNotifier and a Watcher, allowing it to observe dependencies and recompute its value when those dependencies change. The computation is only triggered when value is accessed.

Features:

  • Lazy Computation: The value is computed only when accessed.
  • Automatic Dependency Tracking: Recomputes when observed values change.
  • Efficient Updates: Notifies listeners only if the computed value changes.

Example Usage:

// Create reactive state variables
final count = Ref<int>(0);
final doubleCount = Computed(() => count.value * 2);

// Access computed value (triggers computation)
print(doubleCount.value); // Output: 0

// Update dependency
count.value = 5;

// Computed value updates automatically
print(doubleCount.value); // Output: 10

// Reactivity: Automatically recomputes when `count` changes
watchEffect(() {
  print('Double count changed: ${doubleCount.value}');
});

Notes:

  • The computation is cached until dependencies change.
  • Call force(value) to manually override the computed value.
Inheritance
Mixed-in types

Constructors

Computed(T _getValue())
Creates a new Computed object that computes its value using getValue.

Properties

$ → T
Alias .value
no setterinherited
computes ↔ Map<int, Picker>
A map of computes that are used by this watcher.
getter/setter pairinherited
currentIndexCompute ↔ int
The current index of the compute being used.
getter/setter pairinherited
dryRun ↔ T Function()
A function that is called to track dependencies.
latefinalinherited
hashCode → int
The hash code for this object.
no setterinherited
hasListeners → bool
Whether any listeners are currently registered.
no setterinherited
mounted → bool
Whether the notifier is mounted.
no setterinherited
notifyChange ↔ VoidCallback
latefinalinherited
onChange ↔ VoidCallback
A callback that is called when the watcher's dependencies change.
latefinalinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
value → T
Returns the computed value, computing it if necessary.
no setteroverride
watchers ↔ Set<ReactiveNotifier>
The set of notifiers that this watcher is listening to.
getter/setter pairinherited

Methods

addDepend(ReactiveNotifier ref) → void
Adds a dependency to this watcher.
inherited
addListener(VoidCallback listener) → void
Adds a listener and ensures computation is performed before notifying.
override
dispose() → void
Discards any resources used by the object.
inherited
dispose2() → void
Disposes of the watcher.
inherited
force(T value) → void
Manually overrides the computed value and forces an update.
getCC() → Picker?
Gets the current compute.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notify() → void
Notifies listeners of a change.
notifyListeners() → void
Call all the registered listeners.
inherited
onCleanup(VoidCallback callback) → void
Registers a cleanup function to be called when the watcher is disposed.
inherited
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that are notified when the object changes.
inherited
run() → T
Runs the watcher and returns the result.
inherited
select<U>(U getter(T value)) → Computed<U>
Creates a Computed that selects a value from the notifier.
inherited
setCC(Picker cc) → Picker
Sets the current compute.
inherited
toString() → String
Returns a string representation of the computed value.
override

Operators

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