[Dart]Streamを返す関数

例えばElementのonClickなど、Streamを返す関数はDartの標準ライブラリに多数存在する。

というわけで、自分もStreamを返す関数を作りたい。
以下、サンプル。

StreamController<String> cont = new StreamController();
Stream<String> get onReceive => cont.stream;

void update() {
  HttpRequest.request("http://...../data")
  .then( (HttpRequest req) {
    cont.add(req.responseText);
    if( isFinish ) // 終了フラグ
      cont.close();
  })
  .catchError( (e) {
    cont.addError(e);
  });
}

キモはStreamControllerだ。
addメソッドでデータを送り、終了したらcloseメソッドでストリームを閉じる。
エラーはaddErrorメソッドで通知。


ちなみに、このサンプルでデータ取得ハンドラを貼るには下記のようにする。
a.onReceive.listen( (String data) => print(data) );
※上記サンプルがクラスとして定義されて変数aになっているとする。


コメント

このブログの人気の投稿

nginxでlocalhostとしてアクセスをサーバーに転送する方法

Android・・・テキスト描画あれこれ, ascent(), descent()等

Android:stateに応じてTextの色を変更する・・・ColorStateList