Dart StreamクラスのasBroadcastStreamメソッドについてメモ書き。
asBroadcastStream()はsingle-subscriptionを複数のリスナーが受信するためのメソッド。
名前付きオプション引数(省略可)として、onListen:とonCancel:が用意されている。
onListen:はlistenの最初に呼び出されるコールバックメソッド。
onCancel:はlistenの最後に呼び出されるコールバックメソッド。
コーディングで動作を確認。
void main() async {
  final stream = Stream.fromIterable([1, 2, 3, 4, 5]);
  final multi = stream.asBroadcastStream(
    // 最初に呼び出される。
    onListen: (subscription) {
      print("Start Listen");
    },
    // 最後に呼び出される。
    onCancel: (subscription) {
      print("Cancel Listen");
    },
  );
  // listen1
  multi.listen((event) {
    print("Listener1:$event");
  });
  // listen2
  multi.listen((event) {
    print("Listener2:$event");
  });
}実行結果。
Start Listen
Listener1:1
Listener2:1
Listener1:2
Listener2:2
Listener1:3
Listener2:3
Listener1:4
Listener2:4
Listener1:5
Listener2:5
Cancel Listen

コメント