pump method
- @override
override
Triggers a frame sequence (build/layout/paint/etc), then flushes microtasks.
If duration is set, then advances the clock by that much first. Doing this flushes microtasks.
The supplied EnginePhase is the final phase reached during the pump pass; if not supplied, the whole pass is executed.
See also LiveTestWidgetsFlutterBindingFramePolicy, which affects how
this method works when the test is run with flutter run
.
Implementation
@override
Future<void> pump([ Duration duration, EnginePhase newPhase = EnginePhase.sendSemanticsUpdate ]) {
assert(newPhase == EnginePhase.sendSemanticsUpdate);
assert(inTest);
assert(!_expectingFrame);
assert(_pendingFrame == null);
return TestAsyncUtils.guard<void>(() {
if (duration != null) {
Timer(duration, () {
_expectingFrame = true;
scheduleFrame();
});
} else {
_expectingFrame = true;
scheduleFrame();
}
_pendingFrame = Completer<void>();
return _pendingFrame.future;
});
}