persistent_bottom_nav_bar 1.4.5
persistent_bottom_nav_bar: ^1.4.5 copied to clipboard
A DO ALL persistent/static bottom navigation bar for flutter. In addition to being optionally platform specific, it includes more than 10 styles including neumorphic design.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:persistent_bottom_nav_bar/persistent-tab-view.dart';
import 'custom-widget.dart';
import 'screens.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Persistent Bottom Navigation Bar example project',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
PersistentTabController _controller;
@override
void initState() {
super.initState();
_controller = PersistentTabController(initialIndex: 0);
}
List<Widget> _buildScreens() {
return [HomeScreen(), HomeScreen(), HomeScreen(), HomeScreen()];
}
List<PersistentBottomNavBarItem> _navBarsItems() {
return [
PersistentBottomNavBarItem(
icon: Icon(Icons.home),
title: ("Home"),
activeColor: Colors.blue,
inactiveColor: Colors.grey,
isTranslucent: false,
),
PersistentBottomNavBarItem(
icon: Icon(Icons.search),
title: ("Search"),
activeColor: Colors.teal,
inactiveColor: Colors.grey,
),
PersistentBottomNavBarItem(
icon: Icon(Icons.message),
title: ("Chat"),
activeColor: Colors.deepOrange,
inactiveColor: Colors.grey,
),
PersistentBottomNavBarItem(
icon: Icon(Icons.settings),
title: ("Settings"),
activeColor: Colors.indigo,
inactiveColor: Colors.grey,
),
];
}
@override
Widget build(BuildContext context) {
return PersistentTabView(
controller: _controller,
screens: _buildScreens(),
items: _navBarsItems(), // Redundant here but defined to demonstrate for other than custom style
confineInSafeArea: true,
handleAndroidBackButtonPress: true,
onItemSelected: (int) {
setState(() {}); // This is required to update the nav bar if Android back button is pressed
},
customWidget: CustomNavBarWidget(
items: _navBarsItems(),
onItemSelected: (index) {
setState(() {
_controller.index = index; // THIS IS CRITICAL!! Don't miss it!
});
},
selectedIndex: _controller.index,
),
itemCount: 4,
navBarStyle: NavBarStyle.custom, // Choose the nav bar style with this property
);
}
}