trigger function

void trigger(
  1. void fn()
)

Notify all dependencies about changes

Implementation

@pragma('vm:prefer-inline')
@pragma('wasm:prefer-inline')
@pragma('dart2js:prefer-inline')
void trigger(void Function() fn) {
  final sub = ReactiveNode(flags: ReactiveFlags.watching);
  final prevSub = setActiveSub(sub);
  try {
    fn();
  } finally {
    activeSub = prevSub;
    while (sub.deps != null) {
      final link = sub.deps!;
      final dep = link.dep;
      unlink(link, sub);
      if (dep.subs != null) {
        propagate(dep.subs!);
        shallowPropagate(dep.subs!);
      }
    }
    if (batchDepth == 0) {
      flushEffects();
    }
  }
}