any method
Checks whether test accepts any element provided by this stream.
Calls test on each element of this stream.
If the call returns true, the returned future is completed with true
and processing stops.
If this stream ends without finding an element that test accepts,
the returned future is completed with false.
If this stream emits an error, or if the call to test throws,
the returned future is completed with that error,
and processing stops.
Example:
final result =
await Stream.periodic(const Duration(seconds: 1), (count) => count)
.take(15)
.any((element) => element >= 5);
print(result); // true
Implementation
Future<bool> any(bool test(T element)) {
_Future<bool> future = _Future<bool>();
StreamSubscription<T> subscription = this.listen(
null,
onError: future._completeError,
onDone: () {
future._complete(false);
},
cancelOnError: true,
);
subscription.onData((T element) {
_runUserCode(() => test(element), (bool isMatch) {
if (isMatch) {
_cancelAndValue(subscription, future, true);
}
}, _cancelAndErrorClosure(subscription, future));
});
return future;
}