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})
factory
Контроллер с потоком, поддерживающим только одного подписчика.
StreamController.broadcast({void onListen()?, void onCancel()?, bool sync = false})
factory
Контроллер, где поток может быть прослушан более одного раза.

Свойства

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
переопределено
Отправляет событие данных.
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.18.5/dart-async/StreamController-class.html

Spec-Zone.ru

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