observe method

void Function() observe(
  1. void handler(
    1. ChangeNotification<T>
    ), {
  2. @Deprecated('fireImmediately has no effect anymore. It is on by default.') bool? fireImmediately,
})

Implementation

void Function() observe(
  void Function(ChangeNotification<T>) handler, {
  @Deprecated('fireImmediately has no effect anymore. It is on by default.')
  bool? fireImmediately,
}) {
  T? prevValue;

  void notifyChange() {
    _context.untracked(() {
      handler(
        ChangeNotification(
          type: OperationType.update,
          object: this,
          oldValue: prevValue,
          newValue: value,
        ),
      );
    });
  }

  return autorun((_) {
    final newValue = value;

    notifyChange();

    prevValue = newValue;
  }, context: _context).call;
}