Метод 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.18.5/dart-async/Stream/takeWhile.html