метод takeWhile
-
bool test(
- T element
Пересылает события данных, пока test выполняется.
Возвращает поток, предоставляющий те же события, что и этот поток, пока test не завершится неудачей для события данных. Возвращаемый поток завершается, когда завершается этот поток или когда этот поток впервые выдаёт событие данных, для которого test завершается неудачей.
Вызов test считается завершившимся неудачей, если он возвращает значение, не являющееся true, или если он выбрасывает исключение. Если вызов test выбрасывает исключение, ошибка выдаётся как последнее событие возвращаемого потока.
Прекращает прослушивание этого потока после принятых элементов.
Внутри метод отменяет подписку после получения этих элементов. Это означает, что потоки с единственной подпиской (не широковещательные) закрываются и не могут быть использованы повторно после вызова этого метода.
Возвращаемый поток является широковещательным, если этот поток широковещательный. Для широковещательного потока события проверяются только с момента начала прослушивания возвращаемого потока.
Пример:
final stream = Stream<int>.periodic(const Duration(seconds: 1), (i) => i)
.takeWhile((event) => event < 6);
stream.forEach(print); // Outputs events: 0, ..., 5. Реализация
Stream<T> takeWhile(bool test(T element)) {
return new _TakeWhileStream<T>(this, test);
}
© 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/takeWhile.html