import 'package:flutter/material.dart'; import 'package:using_tabs/tabs/first.dart'; import 'package:using_tabs/tabs/second.dart'; import 'package:using_tabs/tabs/third.dart'; void main() { runApp(MaterialApp( // Title title: "Using Tabs", // Home home: MyHome())); } class MyHome extends StatefulWidget { @override MyHomeState createState() => MyHomeState(); } // SingleTickerProviderStateMixin is used for animation class MyHomeState extends State with SingleTickerProviderStateMixin { /* *-------------------- Setup Tabs ------------------* */ // Create a tab controller late TabController controller; @override void initState() { super.initState(); // Initialize the Tab Controller controller = TabController(length: 3, vsync: this); } @override void dispose() { // Dispose of the Tab Controller controller.dispose(); super.dispose(); } TabBar getTabBar() { return TabBar( tabs: [ Tab( // set icon to the tab icon: Icon(Icons.favorite), ), Tab( icon: Icon(Icons.adb), ), Tab( icon: Icon(Icons.airport_shuttle), ), ], // setup the controller controller: controller, ); } TabBarView getTabBarView(var tabs) { return TabBarView( // Add tabs as widgets children: tabs, // set the controller controller: controller, ); } /* *-------------------- Setup the page by setting up tabs in the body ------------------* */ @override Widget build(BuildContext context) { return Scaffold( // Appbar appBar: AppBar( // Title title: Text("Using Tabs"), // Set the background color of the App Bar backgroundColor: Colors.blue, // Set the bottom property of the Appbar to include a Tab Bar bottom: getTabBar()), // Set the TabBar view as the body of the Scaffold body: getTabBarView([First(), Second(), Third()])); } }