subscribe<T> method

void Function() subscribe<T>(
  1. Pod pod,
  2. void handler(
    1. T value
    ), {
  3. bool fireImmediately = false,
})

Listen to changes of a pod's state.

Call get to retrieve the latest value after the handler is called.

Implementation

void Function() subscribe<T>(
  Pod<dynamic> pod,
  void Function(T value) handler, {
  bool fireImmediately = false,
}) {
  final node = _ensureNode(pod);
  final remove = node.addListener(() {
    handler(node._value as T);
  });

  if (fireImmediately) {
    if (!node.state.initialized) {
      node.value;
    } else {
      handler(node.value as T);
    }
  }

  return () {
    remove();
    if (node.canBeRemoved) {
      _scheduler.runPostFrame(() {
        if (!node.canBeRemoved) return;
        _removeNode(node);
      });
    }
  };
}