[Flutter]アニメーションを繰り返し続けるには?

Flutter

どうも、ちょげ(@chogetarou)です。

アニメーションをずっと繰り返す方法を紹介します。

スポンサーリンク

方法

アニメーションをずっと繰り返す方法は2つあります。

repeat

インターフェース, インターネット, プログラム, ブラウザ, Www

1つは、repeatメソッドを使う方法です。

repeatメソッドは、1度呼び出すとアニメーションを繰り返し続けるメソッドです。

このメソッドを使うには、AnimationControllerに「.repeat()」を付けます。

_controller.repeat();

repeatメソッドは、アニメーションを行い、終わったら初期状態にして、またアニメーションを行うというように繰り返します。

なので、逆向きのアニメーションをして繰り返したい場合には、不向きです。

addStatusListener

プログラマー, プログラミング, コード, 仕事, コンピューター

もう1つは、addStatusListenerを使う方法です。

addStatusListenerは、アニメーションの状態が変わるごとに呼び出される関数です。

このメソッドを使って、アニメーションの状態が切り替わった時に、アニメーションを再開始します。

そうすれば、アニメーションを繰り返し続けられます。

また、addStatusListenerの場合は、アニメーションをした後に、逆向きのアニメーションをして、もう1度アニメーションをするというように繰り返すことが出来ます。

addStatusListenerは、AnimationController の初期化後に、関数を定義して使います。

    _controller = AnimationController(
      duration: Duration(seconds: 1),
      vsync: this,
    );

    _controller.addStatusListener((status) {
      if (status == AnimationStatus.completed) {
        _controller.reverse();
      } else if (status == AnimationStatus.dismissed) {
        _controller.forward();
      }
    });
    

addStatusListenerでrepeatメソッドと同じような繰り返しをすることも可能です。

その場合は、以下のようにresetメソッドを使います。

    _controller.addStatusListener((status) {
      if (status == AnimationStatus.completed) {
        _controller.reset();
        _controller.forward();
      }
    });

まとめ

アニメーションを繰り返し続けるには、AnimationControllerの「repeatメソッド」か「addStatusListener」を使います。

コメント

タイトルとURLをコピーしました