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 = _DummyEffectNode(flags: ReactiveFlags.watching);
  final prevSub = setActiveSub(sub);
  try {
    return fn();
  } finally {
    activeSub = prevSub;
    var link = sub.deps;
    while (link != null) {
      final dep = link.dep;
      link = unlink(link, sub);
      final subs = dep.subs;
      if (subs != null) {
        sub.flags = ReactiveFlags.none;
        propagate(subs);
        shallowPropagate(subs);
      }
    }
    if (batchDepth == 0) {
      flushEffects();
    }
  }
}