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