[Dart]Streamを返す関数
例えばElementのonClickなど、Streamを返す関数はDartの標準ライブラリに多数存在する。
というわけで、自分もStreamを返す関数を作りたい。
以下、サンプル。
キモはStreamControllerだ。
addメソッドでデータを送り、終了したらcloseメソッドでストリームを閉じる。
エラーはaddErrorメソッドで通知。
ちなみに、このサンプルでデータ取得ハンドラを貼るには下記のようにする。
a.onReceive.listen( (String data) => print(data) );
※上記サンプルがクラスとして定義されて変数aになっているとする。
というわけで、自分も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になっているとする。
コメント
コメントを投稿