Метод pipe
Метод pipe передает события потока в объект
StreamConsumer. В первый параметр мы передаем
потребителя, который принимает события потока.
Метод возвращает Future, завершающийся после
того, как потребитель закончит обработку и будет
закрыт. Метод удобен, когда нужно перенаправить
данные одного потока в другой поток, файл или
другой приемник данных.
Синтаксис
Future pipe(StreamConsumer<T> streamConsumer)
Пример
Давайте создадим поток из списка чисел и передадим
его в StreamController, который является
потребителем. Затем подпишемся на поток контроллера
и выведем полученные значения:
import 'dart:async';
void main()
{
StreamController<int> controller = StreamController<int>();
Stream<int> stream = Stream.fromIterable([1, 2, 3, 4, 5]);
controller.stream.listen((value) {
print(value);
});
stream.pipe(controller);
}
Результат выполнения кода:
1
2
3
4
5
Пример
Давайте дождемся завершения метода pipe
с помощью await и выведем сообщение после
завершения передачи потока:
import 'dart:async';
void main() async
{
StreamController<int> controller = StreamController<int>();
Stream<int> stream = Stream.fromIterable([1, 2, 3, 4, 5]);
controller.stream.listen((value) {
print(value);
});
await stream.pipe(controller);
print('done');
}
Результат выполнения кода:
1
2
3
4
5
"done"
Смотрите также
-
класс
Stream,
который представляет поток событий -
метод
listen,
который подписывается на поток -
метод
transform,
который преобразует поток -
класс
StreamController,
который управляет потоком