SignalReaction<T> constructor

SignalReaction<T>(
  1. Signal<T> signal,
  2. void callback(
    1. T value
    ), {
  3. bool when(
    1. T oldValue,
    2. T newValue
    )?,
  4. bool fireImmediately = false,
})

Implementation

SignalReaction(
  this.signal,
  this.callback, {
  this.when,
  bool fireImmediately = false,
}) {
  _previousValue = signal.val;

  if (fireImmediately) {
    callback(signal.val);
  }

  _subscription = signal.stream.listen((value) {
    final oldValue = _previousValue;
    _previousValue = value;

    if (when != null && oldValue != null) {
      if (when!(oldValue as T, value)) {
        callback(value);
      }
    } else {
      callback(value);
    }
  });
}