waitUntil static method
Future<void>
waitUntil(
- FlutterDriver? driver,
- Future<
bool> condition(), { - Duration timeout = const Duration(seconds: 10),
- Duration pollInterval = const Duration(milliseconds: 500),
Waits until the condition
returns true
Will raise a complete with a TimeoutException if the
condition does not return true with the timeout period.
Implementation
static Future<void> waitUntil(
FlutterDriver? driver,
Future<bool> Function() condition, {
Duration timeout = const Duration(seconds: 10),
Duration pollInterval = const Duration(milliseconds: 500),
}) async {
return Future.microtask(() async {
final completer = Completer<void>();
var maxAttempts =
(timeout.inMilliseconds / pollInterval.inMilliseconds).round();
var attempts = 0;
while (attempts < maxAttempts) {
final result = await condition();
if (result) {
completer.complete();
break;
} else {
await Future.delayed(pollInterval);
}
}
}).timeout(timeout);
}