StreamController<T>抽象 接口

控制它所管理的流的控制器。

此控制器允许在其 stream 上发送数据、错误和完成事件。

该类可用于创建其他人可以监听的简单流,并将事件推送到该流。

可以检查流是否已暂停,以及是否有订阅者,还可以在任一状态改变时获取回调。

示例

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

要向流发送数据事件,请使用 addaddStream

streamController.add(999);
final stream = Stream<int>.periodic(
    const Duration(milliseconds: 200), (count) => count * count).take(4);
await streamController.addStream(stream);

要向流发送错误事件,请使用 addErroraddStream

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
实现类型
实现者

构造函数

StreamController({void onListen()?, void onPause()?, void onResume()?, FutureOr<void> onCancel()?, bool sync = false})
一个控制器,它有一个只能有一个单个订阅者的 stream
工厂
StreamController.broadcast({void onListen()?, void onCancel()?, bool sync = false})
具有可以多次监听的 stream 的控制器。
工厂

属性

done Future
一个当流控制器完成发送事件时完成的 future。
没有设置器重写
hashCode int
此对象的哈希码。
没有设置器继承
hasListener bool
是否有订阅者在 Stream 上。
没有设置器
isClosed bool
流控制器是否因添加更多事件而关闭。
没有设置器
isPaused bool
是否订阅需要缓冲事件。
没有设置器
onCancel ↔ (FutureOr<void> Function()?)
当流被取消时调用的回调。
getter/setter pair
onListen ↔ (void Function()?)
当流被监听时调用的回调。
getter/setter pair
onPause ↔ (void Function()?)
当流被暂停时调用的回调。
getter/setter pair
onResume ↔ (void Function()?)
当流被恢复时调用的回调。
getter/setter pair
runtimeType Type
表示对象的运行时类型。
没有设置器继承
sink StreamSink<T>
返回一个只暴露 StreamSink 接口的对此对象的视图。
没有设置器
stream Stream<T>
此控制器所控制的流。
没有设置器

方法

add(T event) → void
发送数据 event
override
addError(Object error, [StackTrace? stackTrace]) → void
发送或排队错误事件。
override
addStream(Stream<T> source, {bool? cancelOnError}) Future
source 接收事件并将它们放入此控制器的流中。
override
close() Future
关闭流。
override
noSuchMethod(Invocation invocation) → dynamic
当访问不存在的类或属性时调用。
继承
toString() String
此对象的字符串表示形式。
继承

操作符

operator ==(Object other) bool
相等运算符。
继承