HiddingBottomNavigationBar is a lightweight library to create and control a hidding bottom navigation bar. When scrolling down, the BottomNavigationBar disappears. On the contrary, when scrolling up, the BottomNavigationBar appears. Effortlessly.
Features
Simple and functional HiddingBottomNavigationBar. The implementation is the same as the Flutter BottomNavigationBar, with a extended functionality to make the bar dissapear or appear. Also, an onHide and onAppear callbacks are provided in the case you need them.
Getting started
Install the dependency with the following command line:
flutter pub add hidding_bottom_navigation_bar
Usage
import 'package:hidding_bottom_navigation_bar/hidding_bottom_navigation_bar.dart';
/**
* Three simple steps:
* 1. Create a ScrollController
* 2. Pass the ScrollController to the ScrollableView (ListView, SingleChildScrollView, etc).
* 3. Pass the same ScrollController to the HiddingBottomNavigationBar
*
*/
class HiddingBottomNavBarWidgetExample extends StatefulWidget {
const HiddingBottomNavBarWidgetExample({super.key});
@override
State<HiddingBottomNavBarWidgetExample> createState() =>
_HiddingBottomNavBarWidgetExampleState();
}
class _HiddingBottomNavBarWidgetExampleState
extends State<HiddingBottomNavBarWidgetTest> {
//You need to create a ScrollController
final controller = ScrollController();
@override
void dispose() {
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
return Scaffold(
appBar: null,
body: SizedBox(
height: size.height * 2,
child: SingleChildScrollView(
//pass the scroll controller to the SingleChildScrollView
controller: controller,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
width: size.width,
height: size.height,
child: const Center(child: Text('Test hidding bottom navigation bar')))
],
),
),
),
bottomNavigationBar: HiddingBottomNavigationBar(
type: FlexibleBottomNavigationBarType.fixed,
items: const [
BottomNavigationBarItem(icon: Icon(Icons.home), label: 'Home'),
BottomNavigationBarItem(
icon: Icon(Icons.calendar_today), label: 'Tasks'),
BottomNavigationBarItem(
icon: Icon(Icons.settings), label: 'Settings'),
],
onTap: (index) {},
//Then pass the scroll controller to the HiddingBototmNavigationBar in order to listen to Scroll changes in the screen
scrollController: controller),
);
}
}