どうも、ちょげ(@chogetarou)です。
AppBarの代わりにTabBarを表示するには、どうしたら良いのでしょうか?
方法
appBar: AppBar(
flexibleSpace: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
TabBar(
tabs: [
Icon(Icons.calendar_today),
Icon(Icons.note),
Icon(Icons.settings)
]),
],
),
),
AppBarの引数「flexibleSpace」を使います。
この引数に、ColumnウェジェットでラップしたTabBarを指定することで、AppBarの代わりにTabBarを表示することが出来ます。
全体のコード
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
flexibleSpace: TabBar(tabs: [
Icon(Icons.calendar_today),
Icon(Icons.note),
Icon(Icons.settings)
]),
),
body: TabBarView(children: [
Icon(Icons.calendar_today),
Icon(Icons.note),
Icon(Icons.settings)
])),
);
}
おまけ
AppBarの型は、PreferredSizedになっています。
なので、「PreferredSizedを使っているTabBarも使えるんじゃないのか?」と思って試してみました。
appBar: TabBar(
tabs: [
Icon(Icons.calendar_today),
Icon(Icons.note),
Icon(Icons.settings)
]),
結果は、エラーは出ません。
ですが、タブバーが表示されませんでした。
PreferredSizedで高さを変更してもダメでした。
なので、ここで紹介したように、AppBarを経由して、TabBarを表示するのが良いようです。
コメント