Riveとは
Riveとは、リッチでおしゃれなアニメーションや動きを色んなプラットフォームに使えるようにしたWebサービスです。
Rive上のエディタでアニメーションを作成し、そのアニメーションを実際のアプリに簡単に組み込むことができます。
今回は、主にFlutterでのアニメーションの実装の部分にフォーカスして話を進めますが、アニメーション自体の作り方などは公式のサイトがすごく参考になると思います
実装
パッケージのインストール
riveをインストール
dependencies:
rive: ^0.6.7
Assetsに追加
https://rive.app/community/
コミュニティに色んなアニメーションが既にあるので、ここからダウンロードすることによってすぐに使うことができます。
右の「Download」をクリックすると.riv
ファイルがダウンロードされるます。
ダウンロードしたら、プロジェクトに戻ってプロジェクト直下にassets
ディレクトリを作成。
そして、さっきの〇〇.riv
をassets
フォルダの直下配置します。
pubspec.yaml
に追加したアセットのパスを追加。
assets:
- assets/love_note_4.riv
アニメーションを開始
実際にアニメーションを表示させる部分を実装していきます。
まずは、変数を定義
Artboard _artboard;
RiveAnimationController _controller;
その後、initState
に以下のコードを追記
rootBundle.load('assets/love_note_4.riv').then(
(data) async {
final file = RiveFile();
if (file.import(data)) {
final artboard = file.mainArtboard;
artboard.addController(_controller = SimpleAnimation('note'));
setState(() => _artboard = artboard);
}
},
);
行っている処理としては、アセットの.riv
ファイルを読み込み、それをRiveFile
オブジェクトとして作成。
また、同時にRiveAnimationController
を継承したSimpleAnimation('note')
をartboard
に追加。
SimpleAnimation
の引数は.riv
ファイルをRiveのエディタで開いた際のアニメーション名を渡す。
(下のスクショの赤い枠の部分がアニメーション名)
そして、好きな箇所にRive(artboard)
を追加
Rive(artboard: _artboard)
おまけ。
このアニメーションを途中で停止さたい場合は、_controller
のisActive
を命令的にfalse
にしてやれば良い。
例えば、、、
void _togglePlay() {
setState(() {
_controller.isActive = !_controller.isActive;
});
}
これをどっかのonTap
やonPressed
に渡してやる。
終わりに
Flutterでいい感じのローディング用のアニメーションないかな〜と探していたところ、これを発見しまして色々触ってみたところかなりいい感じだったので紹介させてもらいました。
全体のコードや最初のGIFで載せてるコードはGitHub上にあげていますので、お好きにご覧ください!
https://github.com/shotaro427/rive-sample