[Flutter]BottomNavigationBarで高さを調整する方法

広告Flutter
2024年3月5日

BottomNavigationBar の高さを調整する方法をまとめていきます。

SizedBox で高さを指定する

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: const Center(
        child: Text('BottomNavigationBar'),
      ),
      bottomNavigationBar: SizedBox(
          height: 120, 
          child: BottomNavigationBar(
            items: const [
              BottomNavigationBarItem(
                icon: Icon(Icons.home),
                label: 'Home',
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.search),
                label: 'Search',
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.settings),
                label: 'Settings',
              ),
            ],
            backgroundColor: Colors.cyan,
          )),
    );
  }
SizedBoxで高さ指定
SizedBoxで高さ指定

Container で高さを調整する

Container を利用し、height と padding で高さを調整しています。

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: const Center(
        child: Text('BottomNavigationBar'),
      ),
      bottomNavigationBar: Container(
          height: 100,
          padding: const EdgeInsets.symmetric(vertical: 10),
          decoration: const BoxDecoration(
            color: Colors.cyanAccent,
          ),
          child: BottomNavigationBar(
            items: const [
              BottomNavigationBarItem(
                icon: Icon(Icons.home),
                label: 'Home',
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.search),
                label: 'Search',
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.settings),
                label: 'Settings',
              ),
            ],
            elevation: 0,
            backgroundColor: Colors.cyan,
          )),
    );
  }
Containerで高さ調整
Containerで高さ調整

label を非表示にした場合の余白を調整する

Label を非表示にした場合に余分な余白ができてしまう場合は、フォントサイズを調整します。

selectedFontSize と unselectedFontSize を 0 に設定します。

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: const Center(
        child: Text('BottomNavigationBar'),
      ),
      bottomNavigationBar: BottomNavigationBar(
        showSelectedLabels: false,
        showUnselectedLabels: false,
        selectedFontSize: 0,
        unselectedFontSize: 0,
        items: const [
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            label: 'Home',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.search),
            label: 'Search',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.settings),
            label: 'Settings',
          ),
        ],
        elevation: 0,
        backgroundColor: Colors.cyan,
      ),
    );
  }
 
左:FontSize調整前 右:FontSize調整後
左:FontSize調整前 右:FontSize調整後

参考

BottomNavigationBar class - material library - Dart API

API docs for the BottomNavigationBar class from the material library, for the Dart programming language.flutter.devflutter.dev