shallowPropagate function

void shallowPropagate(
  1. Link theLink
)

Shallow propagates changes without deep recursion.

Parameters:

  • theLink: The link to start shallow propagation from

Example:

final signalNode = CustomSignalNode<int>(0);
shallowPropagate(signalNode.subs!);

Implementation

void shallowPropagate(Link theLink) {
  Link? link = theLink;
  do {
    final sub = link!.sub;
    final flags = sub.flags;
    if (flags & (ReactiveFlags.pending | ReactiveFlags.dirty) ==
        (ReactiveFlags.pending)) {
      sub.flags = flags | (ReactiveFlags.dirty);
      if (flags & (ReactiveFlags.watching | ReactiveFlags.recursedCheck) ==
          ReactiveFlags.watching) {
        notifyEffect(sub);
      }
    }
  } while ((link = link.nextSub) != null);
}