AppBar — 定義、設定、Flutterウィジェット

著者: IT Sectr 公開日: 2026-07-02 読了時間: 9 分

AppBar は、Flutterにおける画面上部パネルのウィジェットで、Material Designコンポーネントをタイトル、アクション、ナビゲーションボタン、タブで実装します。RowやStackを使ったカスタムパネルとは異なり、AppBarは正しい高さVdp(縮みた状態で40Vdp)と自動的SafeArea処理を備えた完成されたアーキテクチャを提供します。Flutter API Reference (2026)によると、AppBarはSliverAppBarを通じたスクロールアニメーションと、forceMaterialTransparencyパラメータを通じたMaterial3との統合をサポートしています。ティピカルなモバイルアプリでは、AppBarはページタイトル、システムアクション、セクション切り替えを組み合わせたナビゲーションおよび情報のハブとして機能します。

メインポイント

  • AppBar — タイトル、actions、leading、TabBar、Material3をサポートするFlutterの上部パネルウィジェット
  • Title — タイトルテキスト。プラットフォームに応じて中央揃えまたは左揃え
  • Actions — AppBarの右側に配置されるアクションウィジェット(IconButton、PopupMenuButton)のリスト
  • Leading — 左側のナビゲーションボタン(Drawerの“ハンバーガー”アイコンまたはネスト画面の“戻る”ボタン)
  • Bottom — TabBar、PreferredSizeまたはカスタムウィジェットを埋め込むためのAppBarの下部領域

FlutterでのAppBarとは

AppBar は、Scaffoldの上部に表示される標準のMaterial上部パネルコンポーネントです。画面タイトル、ナビゲーションボタン(通常は“ハンバーガー”アイコンまたは“戻る”矢印)、アクション(検索、設定、他の機能を開くアイコン)を含みます。AppBarはプラットフォームに応じて自動的に適応します:Androidでは標準のMaterial下部シャドウを使用し、iOSでは透明感のあるフラットなデザインになります。

AppBarはPreferredSizeWidgetインタフェースを実装しており、高さが固定されていて構築前に決定されます。デフォルトでは、縦向きオリエンテーションにおけるAppBarの高さはAndroidで54dp、iOSで44dpで、上部のSafeAreaを考慮しています。この機能により、Scaffoldはレンダリング中の再構成を避けて、bodyの利用可能なスペースを事前に計算できます。

Flutter Material Library Guide (2026)によると、AppBarはいくつかのイテレーションを経てきました:Flutter1.xではテキストを含む単純なコンテナでしたが、Flutter2.xでMaterial3とflexibleSpaceをサポートし、Flutter3.xではSystem UI(ステータスバーの色、透明感)との統合を実現しました。現代のAppBarは、Android12+デバイスでMaterial YouのDynamic Colorをサポートしています。

AppBarの構造:プロパティとパラメータ

AppBarは、上部パネルの各部分を制御するパラメータセットを提供します。これらのプロパティを理解することで、カスタムソリューションを作らずに、様々なデザイン要件に対応するためにパネルを柔軟にカスタマイズできます。

プロパティ説明
titleWidget?パネルの主タイトル。通常は画面名のText
leadingWidget?タイトルの左側のウィジェット(“戻る”ボタンまたはメニューアイコン)
actionsList<Widget>?右側のアクションウィジェットのリスト(IconButton、PopupMenuButton)
bottomPreferredSizeWidget?TabBarまたはカスタムウィジェットのための下部領域
flexibleSpaceWidget?SliverAppBarでスクロール時にアニメートする背景ウィジェット
backgroundColorColor?パネルの背景色。テーマ色をオーバライド
elevationdoubleパネル下の影。コンテンツ上に浮かぶ効果を作成
centerTitlebool?タイトルの中央揃え(true — Material3の動作、false — Androidスタイル)

Titleとleading:タイトルとナビゲーションの設定

titleプロパティはあらゆるウィジェットを受け付けますが、一般的にはTextStyleを通じたスタイル設定でTextを使用します。長いタイトルの場合は、スペースが不足したときにテキストが正しく切り詰まれるよう、titleをFlexibleでラップすることをおすすめします。leadingプロパティは、明示的に設定されていなければ、Navigator.pushを通じてネスト画面に移動すると、自動的にBackButtonに置き換えられます。

Actions:アクションアイコンの配置

actionsリストには、AppBarの右端に整列されるウィジェットが含まれます。各要素の幅はVdp(Material Design標準)を超えないようにする必要があります。アクションをグループ化するには、PopupMenuButtonを使用します — これにより、重要でないオプションをドロップダウンメニューに隠し、インタフェース密度に関するMaterialの推奨に従います。

AppBarのカスタマイズ:スタイル、色、動作

AppBarは、色、影、パディングプロパティによって深いカスタマイズをサポートしています。ベースのスタイリングはアプリのテーマから継承されますが、各プロパティは個別にオーバライドできます。主な設定シナリオを見てみましょう。

AppBarの背景色はbackgroundColorで設定されます。指定されていなければ、ThemeDataからのappBarThemeが使用されます。Material3では、AppBarの色はColorScheme.primaryから自動的に計算されますが、特定の画面のためにオーバライドできます。透明なAppBar(プロフィールでよく使用されます)には、elevation: 0とともにbackgroundColor: Colors.transparentを設定します。

elevationプロパティはAppBar下の影を制御します。値0は影を消し、Material3に関連する“フラット”なパネル効果を作ります。値4は標準のMaterial Designの影を与えます。カスタム影制御には、shadowColorを使用します — これはパネルをコンテンツから視覚的に区切る影の色です。

AppBarのテキスト色を制御するには、foregroundColorを使用します。このプロパティは、タイトル、アイコン、actions内のテキストの色に影響します。backgroundColorを変更すると、対照的なforegroundColorが自動的に選択されますが、非標準なデザインのために強制することもできます。

SliverAppBar:AppBarのアニメーションバージョン

SliverAppBarは、CustomScrollView内で使用するAppBarの拡張で、スクロールアニメーション(縮小、パララックス効果、固定)をサポートしています。標準のAppBarとは異なり、SliverAppBarはsliverウィジェットであり、スクロール位置に応じてサイズを動的に変えることができます。

SliverAppBarの主なモードは、pinned、floating、snapプロパティの組み合わせで決定されます。pinnedモードでは、パネルは常に画面の上部に表示されます。floatingモードでは、戻るようにスクロールすると表示されます。floating + snapの組み合わせは、少し上にスクロールするだけで現れる“くっつく”パネル動作を作り、ニュースフィードでよく使用されます。

Flutter API SliverAppBar (2026)によると、SliverAppBarを使用するには、普通のListViewまたはColumnをsliverウィジェットを含むCustomScrollViewに置き換える必要があります。Scaffoldは正常に動作し続けますが、ScaffoldのappBarプロパティはnullである必要があります — SliverAppBarはCustomScrollView内の最初のsliverとして配置されます。

アプリでのAppBar設定例

検索、ドロップダウンメニュー、TabBarを備えたAppBarの例を見てみましょう。このコードは、Flutterのプロダクションアプリにおけるティピカルな上部パネル構成を示しています。

dart
Scaffold(
  appBar: AppBar(
    title: const Text('カタログ'),
    centerTitle: true,
    leading: IconButton(
      icon: const Icon(Icons.menu),
      onPressed: () => Scaffold.of(context).openDrawer(),
    ),
    actions: [
      IconButton(
        icon: const Icon(Icons.search),
        onPressed: () => showSearch(context: context, delegate: ProductSearch()),
      ),
      PopupMenuButton<String>(
        onSelected: (String value) {},
        itemBuilder: (context) => [
          const PopupMenuItem(value: 'settings', child: Text('設定')),
          const PopupMenuItem(value: 'about', child: Text('アプリについて')),
        ],
      ),
    ],
    bottom: const TabBar(
      tabs: [
        Tab(text: 'All'),
        Tab(text: 'New'),
        Tab(text: 'Popular'),
      ],
    ),
  ),
  body: const TabBarView(
    children: [
      AllProductsPage(),
      NewProductsPage(),
      PopularProductsPage(),
    ],
  ),
)

この例では、AppBarに中央揃えされたタイトル、左側のDrawerを開くボタン、右側の検索アイコンとドロップダウンメニューが含まれています。下部のTabBarは、製品カテゴリを切り替えることができます。この構成は、モバイルアプリの大所、つまりナビゲーション、検索、追加オプション、セクション切り替えを、すべて一つの上部パネルでカバーしています。

よくある質問

FlutterでAppBarの高さを変更するには?

AppBarの高さは固定(dp)しており、直接変更できません。カスタム高さには、必要な高さのカスタムウィジェットをラップするPreferredSizeを使用します。または、標準パネル機能を失わずに縮みた状態でのサイズを柔軟に管理するために、collapsedHeightを使ったSliverAppBarを使用します。

AppBar下の影を消すには?

AppBarコンストラクタでelevation: 0を設定します。これにより、影が消え、パネルが視覚的にフラットになり、Material3のスタイルに合います。完全な制御には、z座標を維持する必要がある場合にelevationを変えずに影の色をオーバライドするために、shadowColor: Colors.transparentを使用します。

AppBarとSliverAppBarの違いは?

AppBarは、Scaffold.appBarに配置される固定高さの静止パネルです。SliverAppBarは、CustomScrollView内で使用され、スクロールに応じて縮小、固定、アニメーションできる動的バージョンです。SliverAppBarは、スクロール動作を柔軟に管理するためのcollapsedHeight、expandedHeight、pinned、floatingプロパティを提供します。

AppBarに検索を追加するには?

actionsリストに検索アイコンのIconButtonを追加します。タップすると、カスタムSearchDelegateを使ったshowSearchを呼び出し、自動アニメーションで検索画面を開くことができます。または、titleをTextFieldに置き換えて、AppBarをインライン検索バーに変えることもできます。これはカタログやリストに便利です。

AppBarでタイトルが中央揃えされないのはなぜ?

デフォルトではcenterTitleはnullで、動作はプラットフォームに依存します:Androidではタイトルが左揃え、iOSでは中央揃えになります。両プラットフォームで強制的に中央揃えするには、centerTitle: trueを明示的に設定します。leadingが原因でタイトルが中央揃えされない場合は、leadingがnullでないことを確認してください — その存在によりタイトルが右に移動します。

まとめ

  • AppBar — タイトル、leading、actions、TabBar用bottomを備えたFlutterの標準上部パネル。SafeAreaを自動処理
  • Title — パネルの中心要素。centerTitleで中央揃え設定できるあらゆるウィジェットを受け付ける
  • Actions — 右側のアクションウィジェットのリスト。各、Material Design標準で80dpまでの幅
  • Leading — 左側のナビゲーションボタン。ネスト画面移動時に自動的にBackButtonに置き換えられる
  • SliverAppBar — CustomScrollView用AppBar拡張。縮小、固定、パララックス効果をサポート
  • Material3 — AppBarはforceMaterialTransparencyパラメータでDynamic Color、透明感、NavigationBarをサポート
  • カスタマイズ — backgroundColor、elevation、foregroundColor、shadowColorでプロジェクトデザインに合わせた正確な視覚調整が可能

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください