【Flutter】 thenメソッドについて
thenメソッドが使われる事例
動画の再生プレーヤーを作ってみようということで、サンプルを見ながら書いていたところ、thenというコードが使われていたので調べてみました。
@override
void initState() {
super.initState();
_controller = VideoPlayerController.asset('assets/test.mov');
_controller.initialize().then((_){
setState(() {
});
});
}
こんな感じで使われます。
thenの役割とは
thenメソッドは Futureと共に使用されます。このメソッドは、将来のある時点で利用可能になる可能性のある値、またはエラーを表します。
thenメソッド内では、Future が完了したときに呼び出されるコールバックを登録します。Future がある値で完了すると、thenメソッドは指定されたコールバック関数をその値で呼び出します。
上記のコードでは、_controller.initialize()の操作が完了すると、thenメソッドは提供された匿名関数を呼び出します。
この場合、無名関数の空のコールバックでsetStateを呼び出しています。
このことによって、ビルドメソッドが依存する状態を変更しています。
thenを使わない場合のコード
もちろんthenを使わなくても書けます。
@override
void initState(){
super.initState();
initVideoPlayer();
}
Future<void> initVideoPlayer() async {
_controller = VideoPlayerController.asset('assets/test.mov');
await _controller.initialize();
setState(() {});
}
これで、全く同じ処理が可能です。
こうしてみると、ちゃんとFutureを使用し非同期処理を使っていることが分かりますね。
以上です。
最後まで読んで頂きありがとうございました。
この記事が気に入ったらサポートをしてみませんか?