くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Flutter/DartでCallbackをFutureにする

TypeScriptとかだとCallbackをこんな感じで、
Promise化できるけど、Flutterでもしたいなと思い、
いろいろ調べてみたときの備忘録(*´ω`*)

function myPromise(time){
   return new Promise(resolve => {
      setTimeout(() => resolve(), time)
   });
}

CompleterでFuture化

Completerをつかえばいいっぽい

import 'dart:async';

Future myPromise(int time) async {
  final completer = new Completer();
  new Timer(new Duration(seconds: time), (){
    completer.complete();
  });

  return completer.future;
}

返り値や例外も返せる

final completer = new Completer<String>();
// 返り値
completer.complete("return value");
// 例外・エラー
completer.completeError(error);

以上!! これでコールバック地獄から開放される...(*´ω`*)

参考にしたサイトさま