dart:async
库中StreamController
类的用法介绍如下。
带有它控制的流的控制器。
该控制器允许在其 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
- 实现的类型
-
StreamSink<
T> - 实施者
相关用法
- Dart StreamTransformer构造函数用法及代码示例
- Dart Stream.fromFutures用法及代码示例
- Dart Stream.fold用法及代码示例
- Dart Stream.map用法及代码示例
- Dart StreamSubscription用法及代码示例
- Dart Stream.asBroadcastStream用法及代码示例
- Dart Stream.handleError用法及代码示例
- Dart Stream.where用法及代码示例
- Dart Stream.reduce用法及代码示例
- Dart Stream.join用法及代码示例
- Dart Stream.error用法及代码示例
- Dart Stream.periodic用法及代码示例
- Dart Stream.take用法及代码示例
- Dart Stream.every用法及代码示例
- Dart Stream.lastWhere用法及代码示例
- Dart Stream.contains用法及代码示例
- Dart Stream.eventTransformed用法及代码示例
- Dart Stream.firstWhere用法及代码示例
- Dart Stream.drain用法及代码示例
- Dart Stream.empty用法及代码示例
- Dart Stream.multi用法及代码示例
- Dart Stream用法及代码示例
- Dart Stream.distinct用法及代码示例
- Dart Stream.timeout用法及代码示例
- Dart Stream.transform用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 StreamController<T> class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。