あなたが必要な場合:
は、私はそのは以下のように、実際に非同期呼び出し(ファイル読み込み/ AJAX /など)を行うか、単にローカル変数を取得するかどうかを常にFuture<List<Base>>
を返す関数を定義したいです未来をつくるにはCompleter
を使うことができます。ドキュメントのCompleter
classを参照してください。ここに例があります:
Future<List<Base>> GetItemList(){
var completer = new Completer();
// At some time you need to complete the future:
completer.complete(new List<Base>());
return completer.future;
}
しかし、ほとんどの場合、コンプリータで未来を作る必要はありません。この場合のように:
Future<List<Base>> GetItemList(){
var completer = new Completer();
aFuture.then((a) {
// At some time you need to complete the future:
completer.complete(a);
});
return completer.future;
}
コンプリータを使用するとコードが非常に複雑になることがあります。 then()
はFuture
を返しますので、あなたはあまりにも、代わりに使用することができます以下
Future<List<Base>> GetItemList(){
return aFuture.then((a) {
// Do something..
});
}
やファイルIOのための例:
Future<List<String>> readCommaSeperatedList(file){
return file.readAsString().then((text) => text.split(','));
}
は、より多くのヒントについてthis blog postを参照してください。