Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtSpSmCt 101 of 224 menu
◀ ▶

StreamController в Dart

Когда источник не список и не async*, данные пишут в StreamController. Метод add кладет элемент, свойство stream отдает одноразовый поток для подписчиков, close завершает выдачу.

Минимальная схема - создать контроллер, отправить число и прочитать его:

import 'dart:async'; void main() async { StreamController<int> controller = StreamController<int>(); controller.add(1); Stream<int> stream = controller.stream; await for (int n in stream) { print(n); } controller.close(); }

В консоли 1. Пока контроллер открыт, можно вызывать add снова; после close новые элементы не принимаются.

Несколько значений уходят в том порядке, в каком их добавили:

import 'dart:async'; void main() async { StreamController<String> controller = StreamController<String>(); controller.add('S'); controller.add('M'); controller.add('L'); controller.stream.listen((String tag) { print(tag); }); controller.close(); }

Три метки печатаются подряд. Контроллер без флага broadcast допускает одного слушателя на stream.

Создайте StreamController<int>, отправьте числа 10 и 20, прочитайте поток через await for и закройте контроллер.

Через контроллер передайте строки "on" и "off", подключите listen с печатью каждой метки и вызовите close.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить