метод every
-
bool test(
- T element
Проверяет, принимает ли test все элементы, предоставляемые этим потоком.
Вызывает test для каждого элемента этого потока. Если вызов возвращает false, возвращаемый future завершается значением false, и обработка прекращается.
Если этот поток завершается, не найдя элемента, который test отклоняет, возвращаемый future завершается значением true.
Если этот поток выдаёт ошибку или вызов test приводит к исключению, возвращаемый future завершается с этой ошибкой, и обработка прекращается.
Пример:
final result =
await Stream.periodic(const Duration(seconds: 1), (count) => count)
.take(15)
.every((x) => x <= 5);
print(result); // false Реализация
Future<bool> every(bool test(T element)) {
_Future<bool> future = new _Future<bool>();
StreamSubscription<T> subscription =
this.listen(null, onError: future._completeError, onDone: () {
future._complete(true);
}, cancelOnError: true);
subscription.onData((T element) {
_runUserCode(() => test(element), (bool isMatch) {
if (!isMatch) {
_cancelAndValue(subscription, future, false);
}
}, _cancelAndErrorClosure(subscription, future));
});
return future;
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-async/Stream/every.html