Spec-Zone.ru › Dart 2

dart:async

Класс 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>
Реализующие классы
  • MultiStreamController
  • SynchronousStreamController

Конструкторы

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API