Свойство stream
Свойство stream класса StreamController возвращает
объект Stream, связанный с данным контроллером.
Через этот поток подписчики получают данные, которые
контроллер передаёт с помощью метода add,
ошибки, переданные через addError, и сигнал
завершения после вызова close. Свойство доступно
только для чтения и не принимает параметров.
Синтаксис
streamController.stream
Пример
Давайте создадим контроллер, получим его поток
и подпишемся на него через метод listen:
import 'dart:async';
void main()
{
StreamController controller = StreamController();
controller.stream.listen((value) {
print(value);
});
controller.add('abcde');
controller.add('12345');
controller.close();
}
Результат выполнения кода:
"abcde"
"12345"
Пример
Давайте получим поток из контроллера и преобразуем
его данные с помощью метода map:
import 'dart:async';
void main()
{
StreamController controller = StreamController();
controller.stream.map((value) => value * 2).listen((value) {
print(value);
});
controller.add(1);
controller.add(2);
controller.add(3);
controller.close();
}
Результат выполнения кода:
2
4
6
Пример
Давайте соберём все значения потока в список
с помощью метода toList:
import 'dart:async';
void main()
{
StreamController controller = StreamController();
controller.stream.toList().then((res) {
print(res);
});
controller.add(1);
controller.add(2);
controller.add(3);
controller.add(4);
controller.add(5);
controller.close();
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Смотрите также
-
класс
StreamController,
который управляет потоком данных -
метод
add,
который добавляет данные в поток -
метод
close,
который закрывает поток -
свойство
sink,
которое предоставляет приёмник для записи данных