【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を使用し非同期処理を使っていることが分かりますね。

以上です。
最後まで読んで頂きありがとうございました。

この記事が気に入ったらサポートをしてみませんか?