waitForOutput method
Wait for specific content to appear in the output
Implementation
Future<bool> waitForOutput(
String content, {
bool caseSensitive = true,
int timeoutMs = 10000,
}) {
final completer = Completer<bool>();
late StreamSubscription<String> subscription;
// Check if content is already in buffer
final searchContent = caseSensitive ? content : content.toLowerCase();
for (final line in _outputBuffer) {
final lineToCheck = caseSensitive ? line : line.toLowerCase();
if (lineToCheck.contains(searchContent)) {
return Future.value(true);
}
}
// Set up listener
subscription = _outputController.stream.listen((line) {
final lineToCheck = caseSensitive ? line : line.toLowerCase();
if (lineToCheck.contains(searchContent)) {
subscription.cancel();
if (!completer.isCompleted) {
completer.complete(true);
}
}
});
// Set timeout
Future.delayed(Duration(milliseconds: timeoutMs)).then((_) {
subscription.cancel();
if (!completer.isCompleted) {
completer.complete(false);
}
});
return completer.future;
}