trigger<T> function

T trigger<T>(
  1. T fn()
)

Executes fn inside a temporary subscriber and propagates any triggered signals once the callback finishes.

Parameters:

  • fn: Callback that performs reactive writes

Example:

final list = <int>[];
final signal = Signal(list);
list.add(1);
trigger(() {
  signal.value;
});

Implementation

@pragma("vm:prefer-inline")
@pragma("wasm:prefer-inline")
@pragma("dart2js:prefer-inline")
T trigger<T>(T Function() fn) {
  final sub = ReactiveNode(flags: ReactiveFlags.watching);
  final prevSub = setActiveSub(sub);
  try {
    return 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();
    }
  }
}