set method

T set(
  1. T value
)

Stores value, marks the node dirty when it changes, and propagates.

Returns the assigned value. When batchDepth is zero, queued effects flush after propagation. Disposed nodes still store the value but do not notify subscribers.

Implementation

T set(T value) {
  if (!isDisposed && pendingValue != (pendingValue = value)) {
    assert(() {
      JoltDevTools.set(this);
      return true;
    }());
    flags = ReactiveFlags.mutable | ReactiveFlags.dirty;

    if (subs != null) {
      propagate(subs!, runDepth > 0);
      if (batchDepth == 0) {
        flushEffects();
      }
    }
  } else if (isDisposed) {
    this.value = value;
    pendingValue = value;
  }
  return value;
}