apply abstract method

Future<bool> apply(
  1. WidgetTester tester, {
  2. ScenarioFrameSink? record,
  3. Future<void> land()?,
})

Applies the policy. False when the app was still scheduling frames when the policy gave up — the step is captured either way.

True says that and only that: no frame was scheduled. It is not a claim that the app has nothing left to do, because a pending timer is invisible from here — as it is to pumpAndSettle.

record, when a run is recording, receives the frame after every pump — and, where the policy chooses its own interval, dictates it.

land is awaited before every pump, so whatever it lands is drawn by the frame that follows rather than by the frame after the loop. A scenario passes one; a policy applied by hand gets none and keeps meaning exactly what it says. See landRealWork for what it waits on and why the difference is visible: fake time runs a 700ms transition out in a few real milliseconds, so a decode that a device would have finished in the first frame otherwise lands after the last one — the still comes out right and every frame of the movie behind it is a hole.

Implementation

Future<bool> apply(
  WidgetTester tester, {
  ScenarioFrameSink? record,
  Future<void> Function()? land,
});