Complete Guide to Navigator in Flutter

Flutter is a popular mobile application development framework that is used to create apps for both Android and iOS. One of the most important aspects of mobile app development is navigation, and Flutter provides a powerful navigator widget to help you manage navigation in your app. In this guide, we'll take a look at the navigator widget, how to navigate between screens, pass data between screens, and use tab and drawer navigation.

flutter navigator

Flutter Navigator Widget

The navigator widget is a built-in widget in Flutter that provides a powerful way to manage navigation within an app. It allows you to push and pop pages, and it also provides methods to navigate to a new page or return to the previous page. The navigator takes a Route as an argument, which is a widget that contains all the information needed to build a page.

To navigate to a new page, you can use the push method of the navigator. This takes a Route as an argument, and it adds the route to the top of the navigation stack. Here is an example of how to use push to navigate to a new page:

// Create a route for the new page
final route = MaterialPageRoute(builder: (context) => MyNewPage());

// Push the route to the navigation stack
Navigator.push(context, route);

To navigate back to the previous page, you can use the pop method of the navigator. This takes an optional argument, which is the result of the page you are navigating back from. Here is an example of how to use pop to navigate back to the previous page:

// Pop the current route from the navigation stack
Navigator.pop(context);

Passing Data Between Screens in Flutter

In addition to navigating between screens, you can also pass data between screens in Flutter. To do this, you can use the push method of the navigator, and pass the data as an argument to the Route. Here is an example of how to pass data between screens:

// Create a route for the new page, and pass the data as an argument
final route = MaterialPageRoute(
  builder: (context) => MyNewPage(data: myData),
);

// Push the route to the navigation stack
Navigator.push(context, route);

Using Tab Navigation in Flutter

Tab navigation is a common pattern in mobile apps, and Flutter has a built-in widget to make it easy to implement. The TabBar widget allows you to add tabs to your app, and the TabBarView widget allows you to show different content for each tab. Here is an example of how to use the TabBar and TabBarView widgets:

// Create a TabController to manage the tabs
final tabController = TabController(length: 3, vsync: this);

// Create a TabBar with three tabs
final tabBar = TabBar(
  controller: tabController,
  tabs: [
    Tab(text: 'Tab 1'),
    Tab(text: 'Tab 2'),
    Tab(text: 'Tab 3'),
  ],
);

// Create a TabBarView with three pages
final tabBarView = TabBarView(
  controller: tabController,
  children: [
    MyPage1(),
    MyPage2(),
    MyPage3(),
  ],
);

// Add the TabBar and TabBarView to the app
return Scaffold(
  appBar: AppBar(title: Text('My App'), bottom: tabBar),
  body: tabBarView,
);

Using Drawer Navigation in Flutter

Drawer navigation is another common pattern in mobile apps, and Flutter also provides a built-in widget to make it easy to implement. The Drawer widget allows you to add a drawer to your app, and the ListView widget allows you to show different content for each item in the drawer. Here is an example of how to use the Drawer and ListView widgets:

// Create a ListView with three items
final drawerItems = ListView(
  children: [
    ListTile(
      leading: Icon(Icons.home),
      title: Text('Home'),
      onTap: () {
        // Handle the tap event
      },
    ),
    ListTile(
      leading: Icon(Icons.settings),
      title: Text('Settings'),
      onTap: () {
        // Handle the tap event
      },
    ),
    ListTile(
      leading: Icon(Icons.help),
      title: Text('Help'),
      onTap: () {
        // Handle the tap event
      },
    ),
  ],
);

// Create a Drawer with the ListView
final drawer = Drawer(child: drawerItems);

// Add the Drawer to the app
return Scaffold(
  appBar: AppBar(title: Text('My App')),
  drawer: drawer,
  body: Center(child: Text('My Page')),
);

Conclusion

In this guide, we looked at the navigator widget, how to navigate between screens, pass data between screens, and use tab and drawer navigation in Flutter. We also saw how to use the push and pop methods of the navigator, and how to use the TabBar and TabBarView and Drawer and ListView widgets to implement tab and drawer navigation. With this knowledge, you should be able to easily add navigation to your Flutter apps.