Класс StreamController< T>
Контроллер вместе с управляемым им потоком.
Этот контроллер позволяет отправлять события данных, ошибок и завершения в свой поток.
Этот класс можно использовать для создания простого потока, на который могут подписываться другие объекты, и для отправки событий в этот поток.
Можно проверять, приостановлен ли поток и есть ли у него подписчики, а также получать обратный вызов при изменении любого из этих состояний.
Пример:
final streamController = StreamController(
onPause: () => print('Paused'),
onResume: () => print('Resumed'),
onCancel: () => print('Cancelled'),
onListen: () => print('Listens'),
);
streamController.stream.listen(
(event) => print('Event: $event'),
onDone: () => print('Done'),
onError: (error) => print(error),
); Чтобы проверить, есть ли у потока подписчик, используйте hasListener.
var hasListener = streamController.hasListener; // true
Чтобы отправлять в поток события данных, используйте add или addStream.
streamController.add(999);
final stream = Stream<int>.periodic(
const Duration(milliseconds: 200), (count) => count * count).take(4);
await streamController.addStream(stream); Чтобы отправить в поток событие ошибки, используйте addError или addStream.
streamController.addError(Exception('Issue 101'));
await streamController.addStream(Stream.error(Exception('Issue 404'))); Чтобы проверить, закрыт ли поток, используйте isClosed.
var isClosed = streamController.isClosed; // false
Чтобы закрыть поток, используйте close.
await streamController.close(); isClosed = streamController.isClosed; // true
- Реализуемые типы
-
-
StreamSink<
T>
-
StreamSink<
- Реализующие классы
Конструкторы
- StreamController({void onListen()?, void onPause()?, void onResume()?, FutureOr<
void> onCancel()?, bool sync = false}) фабричный - Контроллер с потоком, который поддерживает только одного подписчика.
- StreamController.broadcast({void onListen()?, void onCancel()?, bool sync = false}) фабричный
- Контроллер, на поток которого можно подписаться более одного раза.
Свойства
- done → Future только чтениепереопределено
- Будущее, которое завершается, когда контроллер потока заканчивает отправку событий.
- hashCode → int только чтениеунаследовано
- Хеш-код этого объекта.
- hasListener → bool только чтение
- Есть ли у потока подписчик.
- isClosed → bool только чтение
- Закрыт ли контроллер потока для добавления новых событий.
- isPaused → bool только чтение
- Нужно ли подписке буферизовать события.
- onCancel ↔ (FutureOr<
void> Function()?) чтение / запись - Обратный вызов, который вызывается при отмене потока.
- onListen ↔ (void Function()?) чтение / запись
- Обратный вызов, который вызывается при подписке на поток.
- onPause ↔ (void Function()?) чтение / запись
- Обратный вызов, который вызывается при приостановке потока.
- onResume ↔ (void Function()?) чтение / запись
- Обратный вызов, который вызывается при возобновлении потока.
- runtimeType → Type только чтениеунаследовано
- Представление типа объекта во время выполнения.
- sink → StreamSink<
T> только чтение - Возвращает представление этого объекта, предоставляющее только интерфейс StreamSink.
- stream → Stream<
T> только чтение - Поток, управляемый этим контроллером.
Методы
- add(
T event) → void переопределение - Отправляет событие данных
event. - addError(
Object error, [StackTrace? stackTrace]) → void переопределение - Отправляет или ставит в очередь событие ошибки.
- addStream(
Stream< T> source, {bool? cancelOnError}) → Future переопределение - Получает события из
sourceи помещает их в поток этого контроллера. - close(
) → Future переопределение - Закрывает поток.
- noSuchMethod(
Invocation invocation) → dynamic унаследовано - Вызывается при обращении к несуществующему методу или свойству.
- toString(
) → String унаследовано - Строковое представление этого объекта.
Операторы
- operator ==(
Object other) → bool унаследовано - Оператор равенства.
© 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/StreamController-class.html