DEV Community

Cover image for Flutter BottomNavigationBar
Aadarsh Kunwar
Aadarsh Kunwar

Posted on

6

Flutter BottomNavigationBar

In Flutter, a BottomNavigationBar widget is commonly used for creating a bottom navigation bar in an app, allowing users to navigate between different pages. Below is an example of how to implement a simple BottomNavigationBar in Flutter:

Step-by-Step Implementation
Create a Stateful Widget: Since the bottom navigation bar usually interacts with the app state (like switching between pages), it's typically implemented within a StatefulWidget.

Define the Bottom Navigation Bar Items: Specify the items you want in your bottom navigation bar.

Handle Navigation: Update the page content based on the selected item.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  int _currentIndex = 0;

  // List of widgets for each page
  final List<Widget> _pages = [
    HomePage(),
    SearchPage(),
    ProfilePage(),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Bottom Navigation Bar Example'),
      ),
      body: _pages[_currentIndex], // Display the selected page

      bottomNavigationBar: BottomNavigationBar(
        currentIndex: _currentIndex,
        onTap: (index) {
          setState(() {
            _currentIndex = index;
          });
        },
        items: [
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            label: 'Home',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.search),
            label: 'Search',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.person),
            label: 'Profile',
          ),
        ],
      ),
    );
  }
}

// Example pages
class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Home Page'),
    );
  }
}

class SearchPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Search Page'),
    );
  }
}

class ProfilePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Profile Page'),
    );
  }
}

Enter fullscreen mode Exit fullscreen mode

Key Components:

  • BottomNavigationBar Widget: The primary widget for creating a bottom navigation bar.
  • BottomNavigationBarItem: Represents each item in the bar.
  • currentIndex: Keeps track of the currently selected tab.
  • onTap: Handles the tap event to switch between different pages.

Customization:
You can customize the BottomNavigationBar further by changing the colors, adding more items, adjusting the icon size, or using a custom widget for the items.

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay