A Flutter package for easy implementation of curved navigation bar.
dependencies:
curved_navigation_bar: ^1.0.6 #latest version
Scaffold(
bottomNavigationBar: CurvedNavigationBar(
backgroundColor: Colors.blueAccent,
items: <Widget>[
Icon(Icons.add, size: 30),
Icon(Icons.list, size: 30),
Icon(Icons.compare_arrows, size: 30),
],
onTap: (index) {
//Handle button tap
},
),
body: Container(color: Colors.blueAccent),
)
items
: List of Widgets\
index
: index of NavigationBar, can be used to change current index or to set initial index\
color
: Color of NavigationBar, default Colors.white\
buttonBackgroundColor
: background color of floating button, default same as color attribute\
backgroundColor
: Color of NavigationBar's background, default Colors.blueAccent\
onTap
: Function handling taps on items\
animationCurve
: Curves interpolating button change animation, default Curves.easeOutCubic\
animationDuration
: Duration of button change animation, default Duration(milliseconds: 600)\
height
: Height of NavigationBar, min 0.0, max 75.0\
maxWidth
: Allows to set the width of the navigation bar lower than the entire screen width by default\
letIndexChange
: Function which takes page index as argument and returns bool. If function returns false then page is not changed on button tap. It returns true by default\
//State class
int _page = 0;
GlobalKey<CurvedNavigationBarState> _bottomNavigationKey = GlobalKey();
@override
Widget build(BuildContext context) {
return Scaffold(
bottomNavigationBar: CurvedNavigationBar(
key: _bottomNavigationKey,
items: <Widget>[
Icon(Icons.add, size: 30),
Icon(Icons.list, size: 30),
Icon(Icons.compare_arrows, size: 30),
],
onTap: (index) {
setState(() {
_page = index;
});
},
),
body: Container(
color: Colors.blueAccent,
child: Center(
child: Column(
children: <Widget>[
Text(_page.toString(), textScaleFactor: 10.0),
ElevatedButton(
child: Text('Go To Page of index 1'),
onPressed: () {
//Page change using state does the same as clicking index 1 navigation button
final CurvedNavigationBarState? navBarState =
_bottomNavigationKey.currentState;
navBarState?.setPage(1);
},
)
],
),
),
));
}