非同期処理 - 1m-llc/Flutter-KtoK GitHub Wiki
メソッド (引数) async { ... }
非同期メソッドでは、戻り値に「Future」というクラスのインスタンスが返されます。これは、将来的な戻り値を予約するためのものです。非同期メソッドは、実行時にはまだ処理が完了していません。そこで、「将来、この戻り値を返します」ということを予約しておくための特殊な値(Future)を返します。
Futureは、その後に<>でタイプやクラスが指定されていて、将来返される値のタイプを示しています。Futureとなっていれば、将来、Stringの値が返される、というわけです。
このFutureインスタンスには、「then」というメソッドがあり、非同期の処理が完了し、値が返されると、Futureのthenメソッドが呼び出されます。このthenの引数は通常関数になっています。非同期メソッドの戻り値がその関数に引数として渡されます。この引数を使って必要な処理を行います。
Future<?> 変数 = メソッド ();
[Future].then( ... );
非同期メソッドのもう1つの呼び出し方は「処理が完了するまで待つ」というものです。これは「await」という予約語を付けてメソッドを呼び出します。これにより、処理が完了するまで待ち、終わったら次へと進むようになります。つまり非同期処理を無理やり「同期処理」に変えてしまうということです。
await メソッド();