onNodeRead method

  1. @override
void onNodeRead(
  1. ZenithNode node,
  2. ZenithSubscription subscription
)
override

Called when a ZenithNode.value getter is invoked while this tracker is the active ZenithZone.currentObserver.

Implementation

@override
void onNodeRead(ZenithNode<dynamic> node, ZenithSubscription subscription) {
  if (_isCollectingDependencies) {
    if (_nodesReadThisCompute.add(node)) {
      if (!_trackedSources.contains(node)) {
        _subscriptions[node] = subscription;
      } else {
        subscription(); // Already tracked from previous build, cancel duplicate
      }
    } else {
      subscription(); // Duplicate in same build
    }
  } else {
    subscription();
  }
}