本記事ではフリップアニメーション(カードを回転させるようなアニメーション)をFlutterで実現する方法を紹介します。
flip_cardの導入
今回は外部ライブラリのflip_cardを使います。
サンプル
カード(テキスト)を表示し、FloatingActionButtonを押すとカードを回転させるようなサンプルになっています。
FlipCardのWidgetを生成し、以下のパラメタを必要に応じて設定します
- controller: 回転を管理するコントローラーを設定
- import ‘package:flip_card/flip_card_controller.dart’;
- FlipCardController _controller = FlipCardController();
- flipOnTouch: タッチで回転させるかどうか(デフォルトtrue)
- true/false
- direction: // 回転の向きを指定
- FlipDirection.HORIZONTAL
- FlipDirection.VERTICAL
- speed: 回転速度を指定(デフォルト500)
- front: 表を構成するWidget
- back: 裏を構成するWidget
import 'package:flip_card/flip_card_controller.dart'; import 'package:flutter/material.dart'; import 'package:flip_card/flip_card.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: const MyHomePage(title: 'Flutter Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { const MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @override State<MyHomePage> createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { FlipCardController _controller = FlipCardController(); // 回転を管理するコントローラーを生成 @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ FlipCard( controller: _controller, // 回転を管理するコントローラーを設定 flipOnTouch: false, // タッチで回転しないようにする direction: FlipDirection.HORIZONTAL, // 回転の向きを指定(デフォルトHORIZONTAL) speed: 500, // 回転速度を指定(デフォルト500) front: Container( color: Colors.blue, child: const Text('front'), ), back: Container( color: Colors.red, child: const Text('back') ), ) ], ), ), floatingActionButton: FloatingActionButton( onPressed: () => _controller.toggleCard(), tooltip: 'Increment', child: const Icon(Icons.add), ), ); } }
コメントを残す