当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart StreamController用法及代码示例


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

要将数据事件发送到流,请使用 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
实现的类型

StreamSink<T>


实施者

MultiStreamController SynchronousStreamController

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 StreamController<T> class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。