circle_bottom_navigation_bar 1.0.0 circle_bottom_navigation_bar: ^1.0.0 copied to clipboard
An animated, beauty and functional Bottom Navigation Bar you app.
import 'package:flutter/material.dart';
import 'package:circle_bottom_navigation_bar/circle_bottom_navigation_bar.dart';
import 'package:circle_bottom_navigation_bar/widgets/tab_data.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.deepPurple,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int currentPage = 0;
final List<Widget> _pages = [
Home(),
History(),
Search(),
Alarm(),
];
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
final viewPadding = MediaQuery.of(context).viewPadding;
double barHeight;
double barHeightWithNotch = 67;
double arcHeightWithNotch = 67;
if (size.height > 700) {
barHeight = 70;
} else {
barHeight = size.height * 0.1;
}
if (viewPadding.bottom > 0) {
barHeightWithNotch = (size.height * 0.07) + viewPadding.bottom;
arcHeightWithNotch = (size.height * 0.075) + viewPadding.bottom;
}
return Scaffold(
appBar: AppBar(
title: const Center(
child: Text(
'Circle Bottom Navigation Bar Example',
),
),
),
body: _pages[currentPage],
bottomNavigationBar: CircleBottomNavigationBar(
initialSelection: currentPage,
barHeight: viewPadding.bottom > 0 ? barHeightWithNotch : barHeight,
arcHeight: viewPadding.bottom > 0 ? arcHeightWithNotch : barHeight,
itemTextOff: viewPadding.bottom > 0 ? 0 : 1,
itemTextOn: viewPadding.bottom > 0 ? 0 : 1,
circleOutline: 15.0,
shadowAllowance: 0.0,
circleSize: 50.0,
blurShadowRadius: 50.0,
circleColor: Colors.purple,
activeIconColor: Colors.white,
inactiveIconColor: Colors.grey,
tabs: getTabsData(),
onTabChangedListener: (index) => setState(() => currentPage = index),
),
);
}
}
List<TabData> getTabsData() {
return [
TabData(
icon: Icons.home,
iconSize: 25.0,
title: 'Home',
fontSize: 12,
fontWeight: FontWeight.bold,
),
TabData(
icon: Icons.history,
iconSize: 25,
title: 'History',
fontSize: 12,
fontWeight: FontWeight.bold,
),
TabData(
icon: Icons.search,
iconSize: 25,
title: 'Search',
fontSize: 12,
fontWeight: FontWeight.bold,
),
TabData(
icon: Icons.alarm,
iconSize: 25,
title: 'Alarm',
fontSize: 12,
fontWeight: FontWeight.bold,
),
];
}
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: const Center(
child: Text(
'Home',
style: TextStyle(
fontSize: 30.0,
fontWeight: FontWeight.bold,
),
),
),
),
);
}
}
class History extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: const Center(
child: Text(
'History',
style: TextStyle(
fontSize: 30.0,
fontWeight: FontWeight.bold,
),
),
),
),
);
}
}
class Search extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: const Center(
child: Text(
'Search',
style: TextStyle(
fontSize: 30.0,
fontWeight: FontWeight.bold,
),
),
),
),
);
}
}
class Alarm extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: const Center(
child: Text(
'Alarm ',
style: TextStyle(
fontSize: 30.0,
fontWeight: FontWeight.bold,
),
),
),
),
);
}
}