signalSetter<T> method

T signalSetter<T>(
  1. Signal<T> signal,
  2. T newValue
)

Set a signal's value and trigger updates

Implementation

@pragma('vm:prefer-inline')
@pragma('wasm:prefer-inline')
@pragma('dart2js:prefer-inline')
T signalSetter<T>(Signal<T> signal, T newValue) {
  if (signal.pendingValue != (signal.pendingValue = newValue)) {
    signal.flags = 17 /* ReactiveFlags.mutable | ReactiveFlags.dirty */;

    final subs = signal.subs;
    if (subs != null) {
      propagate(subs);
      if (batchDepth == 0) {
        flush();
      }
    }

    assert(() {
      getJoltDebugFn(signal)?.call(DebugNodeOperationType.set, signal);

      return true;
    }());
  }
  return newValue;
}