個人開発者が勉強がてらまとめているだけのサイトです

いいねボタン Like Button Animation

ハートを押すと、ぽんっとふくらんで縮み、周りに小さな粒が飛び散る。数字も下から入れ替わる。

別名
ハートボタンお気に入りボタンいいねアニメーションハートがはじけるFavorite ButtonHeart Animation
動き
ふくらんで戻る粒が飛び散る数字が入れ替わる
作り方
自作 標準ウィジェットの組み合わせで自分で作ります

本物の Flutter ウィジェットが動きます(初回は数秒かかります)

別タブで大きく開く ↗

どんなもの?

SNS でおなじみの、押して気持ちのいいボタンです。小さな演出で「押した」ことがはっきり伝わります。

大きさの変化は TweenSequence で「1 → 1.45 → 0.9 → 1」のように段階を並べると、弾むような動きになります。

飛び散る粒は CustomPaint で、アニメーションの値に合わせて中心からの距離と透明度を変えて描きます。

数字は AnimatedSwitcher で、値が変わるたびに下から入れ替わるようにしています。

取り消しのときは演出を出さず、静かに戻すのがお約束です。

こんなときに

  • いいね・お気に入り・保存など、何度も押される小さな操作

避けたい場面

  • 削除や購入など重い操作(遊びの演出は合わない)

最小コード

final scale = TweenSequence<double>([
  TweenSequenceItem(tween: Tween(begin: 1, end: 1.45), weight: 30),
  TweenSequenceItem(tween: Tween(begin: 1.45, end: 0.9), weight: 30),
  TweenSequenceItem(tween: Tween(begin: 0.9, end: 1), weight: 40),
]).animate(controller);

ScaleTransition(
  scale: scale,
  child: IconButton(
    onPressed: () {
      setState(() => liked = !liked);
      if (liked) controller.forward(from: 0);
    },
    icon: Icon(liked ? Icons.favorite : Icons.favorite_border),
  ),
)

使うウィジェット

AnimationControllerTweenSequenceCustomPaintAnimatedSwitcher

似ているもの・一緒に見たいもの

触ってみる ↗
ボタン ボタンの種類Button Styles

塗り・トーナル・浮き・枠線・文字だけ、の5段階の目立ち方があり、操作の重要さに合わせて使い分ける。

押すと波紋
触ってみる ↗
ボタン ローディングボタンLoading Button

押すとボタンが丸く縮んで中でくるくる回り、終わるとチェックマークに変わる。二度押しも防げる。

押すと丸く縮む