Dart StreamクラスeventTransformedコンストラクタ

シェルスクリプト Dart

Dart StreamクラスのeventTransformedコンストラクタについてメモ書き。

eventTransformedは受け取ったStreamイベントを加工して出力するコンストラクタ。

第1引数で生成元のStreamを渡し、第2引数でEventSink<T>クラスを渡す。
Sinkはデータの受け皿でパイプの役割を果たす。EventSinkは非同期用のイベントを処理する時に使用する。
EventSinkは抽象クラスなので、implementsで実装する必要がある。
EventSinkはdart:asyncライブラリに含まれている。FutureやStreamと違ってdart:coreで読み込まれていないため、実装時にimportする。
EventSinkでは実装時に以下3つのメソッドをオーバーライドする。

メソッド説明
add()受け取ったデータを加工してSinkに追加する。
addError()エラーをSinkに追加する。
close()Sinkを閉じる。

それではコーディングで動作を確認。
以下の例ではStreamで受け取った数値を2倍に加工し、リスナーに渡している。

import 'dart:async';

// EventSink<T>クラスを実装したMyEventSinkクラスを作成。
class MyEventSink implements EventSink<int> {
  final EventSink<int> _outputSink;

  MyEventSink(this._outputSink);

  // データを加工してSinkに追加。
  void add(int data) {
    _outputSink.add(data * 2);
  }

  // エラー出力をSinkに追加。
  void addError(Object error, [StackTrace? stackTrace]) {
    _outputSink.addError(error, stackTrace);
  }

  // Sinkを閉じる。
  void close() {
    _outputSink.close();
  }
}

void main() {
  // 生成元のStreamを作成。





Dart Streamクラスの使い方:コンストラクタと主要メソッド解説マップ

📁 Dart Streamクラスの全体像・主要メソッド
Streamクラスのコンストラクタや主要メソッド一覧は、以下の解説マップをご覧ください。
➔ Dart Streamクラスの使い方:コンストラクタと主要メソッド解説マップ

コメント

タイトルとURLをコピーしました