🤩

【Flutter】アプリのUIをかっこよくする10のpackageたち

に公開
1

株式会社GENDA モバイル開発部の名取です。
この記事は GENDA Advent Calendar 2025 シリーズ2 Day 11 の記事です。

https://qiita.com/advent-calendar/2025/genda

概要

この記事ではFlutterアプリ開発において、UIを洗練させるために個人的におすすめなpackageを10個厳選して紹介します。

Claude Codeをはじめとするエージェント型のコーディングツールが普及し個人開発を行う方も増えてきたと思います。私もその一人ですが、エンジニアが一人でアプリ開発を行うとどうしてもUIが質素になりがちです。

FlutterにはUIをリッチにする素晴らしいpackageがたくさんあるので私が個人開発で使用しているものを中心にご紹介できればと思います。

1. dotlottie_loader

lottieアニメーションを再生するためのpacakgeです。
https://pub.dev/packages/dotlottie_loader

公式サイトには数多くの無料で使えるアニメーションが用意されています。lottieアニメーションを自作できなくても、アプリにマッチするアニメーションがあると思うので気になる方は探してみて下さい!
https://lottiefiles.com/jp/

こんな感じで滑らかなアニメーションが要所要所で表示されるだけでアプリ全体のクオリティが上がると思います。

ちなみに、lottieアニメーションを再生するpackageだと下記がメジャーですが、.json よりも .lottie の方が軽量でロードがはやいなどの特徴があるため .lottie 形式のアニメーションを好んで使用しています。
https://pub.dev/packages/lottie

2. table_calender

リッチなカレンダー画面を手軽に実装できるpackageです。
https://pub.dev/packages/table_calendar

使用場面は限定されますが、カレンダー要素のあるアプリでは非常に効果的なpackageです。
スワイプジェスチャーで日付ごとのリストが伸縮し動きも滑らかです。

カスタマイズ性に富んでおり使い勝手が良いのが特徴的で開発中のアプリでも使っているので今回ご紹介いたしました。

3. google_fonts

Google Fontsを使用するためのpackageです。
https://pub.dev/packages/google_fonts

このパッケージの最大のメリットはアセット管理不要でいろんな種類のフォントが使えることです。
ttfなどのファイルは不要で下記の1行で好きなフォントを適用できます。

Text('Hello', style: GoogleFonts.lobster())

アプリのバイナリが軽量になるのは勿論、Google Fontsは全てオープンライセンスなので使いやすい点もポイントが高いです。

4. tutorial_coach_mark

リッチなチュートリアルを手軽に実装するためのpackageです。
https://pub.dev/packages/tutorial_coach_mark

個人開発などデザイナーなしでアプリ開発をする場合、かっこいいチュートリアル画像の作成がむずかしかったりしますが、このpackageを使うとインタラクティブなチュートリアルが実装できます。

5. animated_text_kit

テキストアニメーションpackageです。
https://pub.dev/packages/animated_text_kit

ユーザーの注目を集めたい箇所や、待機時間を楽しくしたい場面で効果的です。
最近だとAIやボットの「入力中...」の演出にも使えると思います。

6. loading_animation_widget

ローディングを手軽にリッチに表現するpackageです。
https://pub.dev/packages/loading_animation_widget

ローディングがないアプリはないといっても過言ではないと思いますが、Flutter標準のローディングだとどうしても味気ない感じになるのでローディングを少しいじるだけでもアプリがかっこよくなると思います。

7. fl_chart

様々なチャートを見栄えよく表示するためのpackageです。
https://pub.dev/packages/fl_chart

使用場面は限定的ですが、金融系のアプリやフィットネスアプリ、ダッシュボード画面などでは積極的に使用したいpackageです。

Line, Bar, Pie, Scatter, Radarなど豊富なチャートタイプに加えタッチ操作可能、アニメーション対応などが備わっています。

8. flutter_animate

アニメーションの記述を簡潔に記述するためのpackageです。
https://pub.dev/packages/flutter_animate

標準FlutterのAnimationControllerでできることほぼ一緒ですが記述が段違いにシンプルにできます。

フェードアウト + スケールアニメーション

下記のようなアニメーションを実装する際のコードを比較してみましょう。

flutter_animateなし

class HeartBurstWidget extends StatefulWidget {
    const HeartBurstWidget({super.key});

    
    State<HeartBurstWidget> createState() => _HeartBurstWidgetState();
  }

  class _HeartBurstWidgetState extends State<HeartBurstWidget>
      with SingleTickerProviderStateMixin {
    late AnimationController _controller;
    late Animation<double> _scaleAnimation;
    late Animation<double> _fadeAnimation;

    
    void initState() {
      super.initState();
      _controller = AnimationController(
        duration: const Duration(milliseconds: 500),
        vsync: this,
      );

      _scaleAnimation = Tween<double>(begin: 1.0, end: 1.5).animate(
        CurvedAnimation(parent: _controller, curve: Curves.easeOut),
      );

      _fadeAnimation = Tween<double>(begin: 1.0, end: 0.0).animate(
        CurvedAnimation(parent: _controller, curve: Curves.easeOut),
      );

      _controller.forward(); // 1回のみ実行
    }

    
    void dispose() {
      _controller.dispose();
      super.dispose();
    }

    
    Widget build(BuildContext context) {
      return AnimatedBuilder(
        animation: _controller,
        builder: (context, child) {
          return Opacity(
            opacity: _fadeAnimation.value,
            child: Transform.scale(
              scale: _scaleAnimation.value,
              child: child,
            ),
          );
        },
        child: const Icon(Icons.favorite, size: 64, color: Colors.red),
      );
    }
  }

flutter_animateあり

const Icon(Icons.favorite, size: 64, color: Colors.red)
      .animate()
      .scale(
        begin: const Offset(1.0, 1.0),
        end: const Offset(1.5, 1.5),
        duration: 500.ms,
        curve: Curves.easeOut,
      )
      .fadeOut(
        begin: 1.0,
        duration: 500.ms,
        curve: Curves.easeOut,
      )

9. heroine

ヒーロートランジションを実現するためのpackageです。Instagramなどでお馴染みのあのUIを手軽に実装できます。
https://pub.dev/packages/heroine

Flutter標準でもヒーロートランジションは可能ですがドラッグして閉じたりなどカスタマイズ性に優れているのが特徴です。

フォトギャラリーやECサイトのようなアプリでは効果的かと思います。

10. flutter_slidable

リストアイテムを左右にスワイプして、削除・編集・共有などのアクションボタンを表示できるpackageです。iOSのメールアプリやLINEのトーク削除のような操作を簡単に実装できます。
https://pub.dev/packages/flutter_slidable

スワイプで削除のみであればDismissibleで実現できますが複数アクションボタンの設置や左右で異なるアクションを実装するにはflutter_slidableが有用です。

TODOアプリなどを開発する際はぜひ使用を検討したいpackageです!

まとめ

挙げたらキリがないくらい素晴らしいpackageがたくさんあります。
AIはもちろん、これらのpackageもうまく活用して素晴らしいアプリを作っていきたいですね!

Discussion

KvraKvra

まとめてくださりありがとうございます!
使ってみたいのたくさんあって、どれにしようか迷います。