registerChangeCallback method

  1. @override
IDisposable registerChangeCallback(
  1. void callback(
    1. Object? state
    ),
  2. Object? state
)
override

Registers for a callback that will be invoked when the entry has changed. hasChanged MUST be set before the callback is invoked.

Implementation

@override
IDisposable registerChangeCallback(
  void Function(Object? state) callback,
  Object? state,
) {
  if (_hasChanged) {
    // If already changed, invoke callback immediately
    try {
      callback(state);
    } catch (e) {
      // Ignore callback exceptions
    }
    return _CallbackDisposable(this, null);
  }

  final registration = _CallbackRegistration(callback, state);
  _callbacks.add(registration);

  // Start polling when first callback is registered
  if (_callbacks.length == 1) {
    _startPolling();
  }

  return _CallbackDisposable(this, registration);
}