當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。