Instantly share code, notes, and snippets.
Created
December 13, 2019 08:11
-
Save GrandSchtroumpf/0e5ac95fcca61374a61107f32924f8a0 to your computer and use it in GitHub Desktop.
Flutter Example - bottom nav bar
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:flutter/material.dart'; | |
void main() { | |
runApp(MaterialApp( | |
debugShowCheckedModeBanner: false, | |
// Title | |
title: "Using Tabs", | |
// Home | |
home: MyHome())); | |
} | |
class MyHome extends StatefulWidget { | |
@override | |
MyHomeState createState() => MyHomeState(); | |
} | |
// SingleTickerProviderStateMixin is used for animation | |
class MyHomeState extends State<MyHome> with SingleTickerProviderStateMixin { | |
// Create a tab controller | |
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(); | |
} | |
@override | |
Widget build(BuildContext context) { | |
return Scaffold( | |
// Appbar | |
appBar: AppBar( | |
// Title | |
title: Text("Using Bottom Navigation Bar"), | |
// Set the background color of the App Bar | |
backgroundColor: Colors.blue, | |
), | |
// Set the TabBar view as the body of the Scaffold | |
body: TabBarView( | |
// Add tabs as widgets | |
children: <Widget>[FirstTab(), SecondTab(), ThirdTab()], | |
// set the controller | |
controller: controller, | |
), | |
// Set the bottom navigation bar | |
bottomNavigationBar: Material( | |
// set the color of the bottom navigation bar | |
color: Colors.blue, | |
// set the tab bar as the child of bottom navigation bar | |
child: TabBar( | |
tabs: <Tab>[ | |
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, | |
), | |
), | |
); | |
} | |
} | |
class FirstTab extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return Scaffold( | |
backgroundColor: Colors.red, | |
body: Container( | |
child: Center( | |
child: Column( | |
// center the children | |
mainAxisAlignment: MainAxisAlignment.center, | |
children: <Widget>[ | |
Icon( | |
Icons.favorite, | |
size: 160.0, | |
color: Colors.white, | |
), | |
Text( | |
"First Tab", | |
style: TextStyle(color: Colors.white), | |
) | |
], | |
), | |
), | |
), | |
); | |
} | |
} | |
class SecondTab extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return Scaffold( | |
backgroundColor: Colors.green, | |
body: Container( | |
child: Center( | |
child: Column( | |
// center the children | |
mainAxisAlignment: MainAxisAlignment.center, | |
children: <Widget>[ | |
Icon( | |
Icons.adb, | |
size: 160.0, | |
color: Colors.white, | |
), | |
Text( | |
"Second Tab", | |
style: TextStyle(color: Colors.white), | |
) | |
], | |
), | |
), | |
), | |
); | |
} | |
} | |
class ThirdTab extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return Scaffold( | |
backgroundColor: Colors.orange, | |
body: Container( | |
child: Center( | |
child: Column( | |
// center the children | |
mainAxisAlignment: MainAxisAlignment.center, | |
children: <Widget>[ | |
Icon( | |
Icons.airport_shuttle, | |
size: 160.0, | |
color: Colors.white, | |
), | |
Text( | |
"Third Tab", | |
style: TextStyle(color: Colors.white), | |
) | |
], | |
), | |
), | |
), | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment