【おしゃれなNavigation Bar を実装したい!】
本記事ではそんな要望にお答えします。
curved_navigation_bar パッケージを使った、
おしゃれな Navigation Bar の実装方法について解説します。
以下のようなUI が実装可能です。
基本的な使い方からカスタマイズ方法まで、詳しく解説します。
ぜひ読んでみてください!
基本的な使い方
基本的な使い方について解説していきます。
準備
まず準備として、パッケージのインストールと、
Dartファイルへのインポート文の追加を行います。
パッケージのインストール
CLI(macならターミナル)で、自分のプロジェクトのルートにて
以下のコマンドを実行しパッケージをインストールします。
flutter pub add curved_navigation_bar
パッケージのインポート
実装したいDartファイルの上部に以下のインポート文を追加し、
パッケージをインポートします。
import 'package:curved_navigation_bar/curved_navigation_bar.dart';
実装
実装方法について解説します。
Scaffold
のbottomNavigationBar
プロパティにCurvedNavigationBar
ウィジェットを設定します。
CurvedNavigationBar
ウィジェットのindex
プロパティにページを管理するインデックスを、items
プロパティにNavigation Bar
に設定したいアイコン等のウィジェットのリストを、onTap
プロパティにNavigation Bar
タップ時の処理を定義する関数を設定します。
@override
Widget build(BuildContext context) {
return Scaffold(
// ...
bottomNavigationBar: CurvedNavigationBar(
index: index,
items: const <Widget>[
Icon(Icons.man, size: 30),
Icon(Icons.timeline, size: 30),
Icon(Icons.settings, size: 30),
],
onTap: (int index) {
setState(() {
this.index = index;
});
},
),
);
import 'package:curved_navigation_bar/curved_navigation_bar.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: MyWidget(),
);
}
}
class MyWidget extends StatefulWidget {
const MyWidget({super.key});
@override
State<MyWidget> createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
int index = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Curved Navigation Bar Sample'),
),
body: <Widget>[
Container(
width: double.infinity,
height: double.infinity,
color: Colors.red,
),
Container(
width: double.infinity,
height: double.infinity,
color: Colors.green,
),
Container(
width: double.infinity,
height: double.infinity,
color: Colors.orange,
),
][index],
bottomNavigationBar: CurvedNavigationBar(
index: index,
items: const <Widget>[
Icon(Icons.man, size: 30),
Icon(Icons.timeline, size: 30),
Icon(Icons.settings, size: 30),
],
onTap: (int index) {
setState(() {
this.index = index;
});
},
),
);
}
}
上記コードで以下のようにアニメーションがついたNavigation Bar
が作成できます。
基本的な使い方は以上となります!
カスタマイズ方法
カスタマイズ方法として、CurvedNavigationBar
ウィジェットに用意されているプロパティを
いくつか紹介します。
色の設定
color
プロパティで背景色、現在のアイコンの背景色を一括で変更可能です。buttonBackgroundColor
プロパティで現在のアイコンの背景色を変更可能です。backgroundColor
プロパティでアニメーション背景の色を変更可能です。
CurvedNavigationBar(
color: Colors.blue[200]!,
buttonBackgroundColor: Colors.grey,
backgroundColor: Colors.white,
// ...
),
高さの設定
height
プロパティでNavigation Bar
の高さを設定可能です。
CurvedNavigationBar(
height: 50,
// ...
),
アニメーション設定
animationCurve
プロパティで、アニメーションの動き方を設定可能です。animationDuration
プロパティでアニメーションにかかる秒数を設定可能です。
CurvedNavigationBar(
animationCurve: Curves.bounceIn,
animationDuration: const Duration(milliseconds: 900),
// ...
),
以上がカスタマイズ方法の詳解となります!
まとめ
本記事では curved_navigation_bar パッケージを使った、
おしゃれな Navigation Bar の実装方法について解説しました。
基本的な使い方からカスタマイズ方法まで、詳しく解説しました。
いかがだったでしょうか?
普段使っているBottomNavigationBar
をこのパッケージのウィジェットに入れ替えるだけで、
簡単に実装可能となります。
あなたのアプリにちょっとアクセントを加えたい、と思ったら、
ぜひこのパッケージを導入してみることをオススメします。
本記事があなたのあぷり開発の一助となれば幸いです。
編集後記(2022/10/21)
最近、Flutter 公式のゲーム開発へのプッシュが多いです。
1週間に1~2回はゲーム関係のツイートをしているように思います。
Flutterでのゲーム作成は自分も2作品ほどリリースしていることもあり、
結構身近なものになってきているかな、と思います。
ゲームエンジンのFlameを使わずとも、
アイデア次第でゲームを作れるのはFlutterのいいところだと思います。
あなたも、是非挑戦してみてはいかがでしょうか?
きっと楽しい経験となるはずです。
週刊Flutter大学では、Flutterに関する技術記事、Flutter大学についての紹介記事を投稿していきます。
記事の更新情報はFlutter大学Twitterにて告知します。
ぜひぜひフォローをお願いいたします。