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}) 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