控制它所管理的流的控制器。
此控制器允许在其 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
要向流发送数据事件,请使用 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}) - 一个控制器,它有一个只能有一个单个订阅者的 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 - 相等运算符。继承