控制其流的一个控制器。
此控制器允许在其 流 上发送数据、错误和完成事件。
此类可用于创建一个其他人可以监听的简单流,并将事件推送到该流。
可以检查流是否已暂停,以及是否有订阅者,还可以在其中一个更改时获取回调。
示例
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
构造函数
-
StreamController({void onListen()?, void onPause()?, void onResume()?, FutureOr<
void> onCancel()?, bool sync = false}) - 一个控制器,它有一个 流,该流只支持一个单独的订阅者。工厂
- StreamController.broadcast({void onListen()?, void onCancel()?, bool sync = false})
- 一个控制器,其中 流 可以被多次监听。工厂
属性
- done → Future
- 当流控制器完成发送事件时,此 future 完成。没有设置器覆盖
- hashCode → int
- 此对象的哈希码。没有设置器继承
- hasListener → bool
- 是否在 Stream 上有订阅者。没有设置器
- isClosed → bool
- 流控制器是否已关闭以添加更多事件。没有设置器
- isPaused → bool
- 订阅是否需要缓冲事件。没有设置器
-
onCancel ↔ (FutureOr<
void> Function()?) - 当流被取消时调用的回调。getter/setter 对
- onListen ↔ (void Function()?)
- 当流被监听时调用的回调。getter/setter 对
- onPause ↔ (void Function()?)
- 当流被暂停时调用的回调。getter/setter 对
- onResume ↔ (void Function()?)
- 当流被恢复时调用的回调。getter/setter 对
- 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 - 此对象的字符串表示。继承的