hold method

void hold(
  1. Duration d, {
  2. required Beat after,
})

Holds the viewer while the app keeps running.

Asks the filming run to pump d more of the app in the pause after after, and shows it. A spinner keeps spinning, a video keeps playing — which a freeze cannot do and no recording contains.

The pause is where it goes because that is where the film already has the run in its hands with no verb running. A beat with no pause of its own — one that never settled — cannot be held after.

Implementation

void hold(Duration d, {required Beat after}) {
  var phase = after.phase(PhaseKind.dwell) ?? after.phase(PhaseKind.open);
  if (phase == null || d <= Duration.zero) return;
  _holds[phase.index] = (_holds[phase.index] ?? Duration.zero) + d;
  _add(d, frozen: false);
}