252 lines
7.6 KiB
Dart
252 lines
7.6 KiB
Dart
// // ignore_for_file: prefer_const_constructors
|
|
|
|
// import 'package:flutter/material.dart';
|
|
// import 'package:flutter_bloc/flutter_bloc.dart';
|
|
|
|
// class BottomNavBar extends StatefulWidget {
|
|
// const BottomNavBar({super.key, required this.selected});
|
|
|
|
// final int selected;
|
|
|
|
// @override
|
|
// State<BottomNavBar> createState() => _BottomNavBarState();
|
|
// }
|
|
|
|
// class _BottomNavBarState extends State<BottomNavBar> {
|
|
// @override
|
|
// Widget build(BuildContext context) {
|
|
// return BottomAppBar(
|
|
// shape: const CircularNotchedRectangle(),
|
|
// child: Container(
|
|
// width: MediaQuery.of(context).size.width,
|
|
// height: MediaQuery.of(context).size.height * 0.085,
|
|
// decoration: BoxDecoration(
|
|
// color: Colors.white,
|
|
// ),
|
|
// padding: EdgeInsets.symmetric(vertical: 10),
|
|
// child: Row(
|
|
// children: [
|
|
// const Spacer(),
|
|
// IconBottomBar(
|
|
// index: 0,
|
|
// label: 'Home',
|
|
// selected: widget.selected,
|
|
// icon: 'home.png',
|
|
// navigateTo: "/dashboard"),
|
|
// const Spacer(),
|
|
// IconBottomBar(
|
|
// index: 1,
|
|
// label: 'kalori',
|
|
// selected: widget.selected,
|
|
// icon: 'kalori.png',
|
|
// navigateTo: "/kalori"),
|
|
// const Spacer(),
|
|
// IconBottomBar(
|
|
// index: 2,
|
|
// label: 'Riwayat',
|
|
// selected: widget.selected,
|
|
// icon: 'riwayat.png',
|
|
// navigateTo: "/riwayat"),
|
|
// const Spacer(),
|
|
// IconBottomBar(
|
|
// index: 3,
|
|
// label: 'Profile',
|
|
// selected: widget.selected,
|
|
// icon: 'user.png',
|
|
// navigateTo: "/profile"),
|
|
// ],
|
|
// ),
|
|
// ),
|
|
// );
|
|
// }
|
|
// }
|
|
|
|
// class IconBottomBar extends StatelessWidget {
|
|
// // final String label;
|
|
// final int index;
|
|
// final int selected;
|
|
// final String icon;
|
|
// final String label;
|
|
// final String navigateTo;
|
|
// // final NavEvent navigateTo;
|
|
// const IconBottomBar(
|
|
// {super.key,
|
|
// // required this.label,
|
|
// required this.index,
|
|
// required this.selected,
|
|
// required this.icon,
|
|
// required this.navigateTo,
|
|
// required this.label});
|
|
|
|
// @override
|
|
// Widget build(BuildContext context) {
|
|
// return GestureDetector(
|
|
// onTap: () {
|
|
// Navigator.pushReplacementNamed(context, navigateTo.toString());
|
|
// // if (isUserLoggedIn || index == 0 || index == 1) {
|
|
// // BlocProvider.of<NavBloc>(context).add(navigateTo);
|
|
// // } else {
|
|
// // showNotLoggedInDialog(context);
|
|
// // }
|
|
// },
|
|
// child: Container(
|
|
// width: MediaQuery.of(context).size.width * 0.2,
|
|
// height: MediaQuery.of(context).size.height * 0.09,
|
|
// child: Column(
|
|
// crossAxisAlignment: CrossAxisAlignment.center,
|
|
// // mainAxisSize: MainAxisSize.min,
|
|
// children: [
|
|
// Container(
|
|
// height: MediaQuery.of(context).size.height * 0.0325,
|
|
// child: Image.asset(
|
|
// 'assets/images/$icon',
|
|
// fit: BoxFit.cover,
|
|
// color: (selected == index) ? Colors.orange : Colors.grey,
|
|
// ),
|
|
// ),
|
|
// SizedBox(height: 5),
|
|
// Text(
|
|
// label,
|
|
// style: Theme.of(context).textTheme.headline6!.copyWith(
|
|
// fontSize: 12,
|
|
// color: (selected == index)
|
|
// ? Colors.orange
|
|
// : Colors.grey.withOpacity(0.5),
|
|
// ),
|
|
// )
|
|
// ],
|
|
// ),
|
|
// ),
|
|
// );
|
|
// }
|
|
// }
|
|
// ignore_for_file: prefer_const_constructors
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
|
|
class BottomNavBar extends StatefulWidget {
|
|
const BottomNavBar({super.key, required this.selected});
|
|
|
|
final int selected;
|
|
|
|
@override
|
|
State<BottomNavBar> createState() => _BottomNavBarState();
|
|
}
|
|
|
|
class _BottomNavBarState extends State<BottomNavBar> {
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return BottomAppBar(
|
|
shape: const CircularNotchedRectangle(),
|
|
child: Container(
|
|
width: MediaQuery.of(context).size.width,
|
|
height: MediaQuery.of(context).size.height * 0.085,
|
|
decoration: BoxDecoration(
|
|
color: Colors.white,
|
|
),
|
|
padding: EdgeInsets.symmetric(vertical: 10),
|
|
child: Row(
|
|
children: [
|
|
const Spacer(),
|
|
IconBottomBar(
|
|
index: 0,
|
|
label: 'Home',
|
|
selected: widget.selected,
|
|
icon: 'home.png',
|
|
navigateTo: "/dashboard"),
|
|
const Spacer(),
|
|
IconBottomBar(
|
|
index: 1,
|
|
label: 'kalori',
|
|
selected: widget.selected,
|
|
icon: 'kalori.png',
|
|
navigateTo: "/kalori"),
|
|
const Spacer(),
|
|
IconBottomBar(
|
|
index: 2,
|
|
label: 'Riwayat',
|
|
selected: widget.selected,
|
|
icon: 'riwayat.png',
|
|
navigateTo: "/riwayat"),
|
|
const Spacer(),
|
|
IconBottomBar(
|
|
index: 3,
|
|
label: 'tambah darah',
|
|
selected: widget.selected,
|
|
icon: 'blood.jpg',
|
|
navigateTo: "/blood"),
|
|
const Spacer(),
|
|
IconBottomBar(
|
|
index: 4,
|
|
label: 'Profile',
|
|
selected: widget.selected,
|
|
icon: 'user.png',
|
|
navigateTo: "/profile"),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
class IconBottomBar extends StatelessWidget {
|
|
// final String label;
|
|
final int index;
|
|
final int selected;
|
|
final String icon;
|
|
final String label;
|
|
final String navigateTo;
|
|
// final NavEvent navigateTo;
|
|
const IconBottomBar(
|
|
{super.key,
|
|
// required this.label,
|
|
required this.index,
|
|
required this.selected,
|
|
required this.icon,
|
|
required this.navigateTo,
|
|
required this.label});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return GestureDetector(
|
|
onTap: () {
|
|
Navigator.pushReplacementNamed(context, navigateTo.toString());
|
|
// if (isUserLoggedIn || index == 0 || index == 1) {
|
|
// BlocProvider.of<NavBloc>(context).add(navigateTo);
|
|
// } else {
|
|
// showNotLoggedInDialog(context);
|
|
// }
|
|
},
|
|
child: Container(
|
|
width: MediaQuery.of(context).size.width * 0.2,
|
|
height: MediaQuery.of(context).size.height * 0.09,
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
// mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
Container(
|
|
height: MediaQuery.of(context).size.height * 0.0325,
|
|
child: Image.asset(
|
|
'assets/images/$icon',
|
|
fit: BoxFit.cover,
|
|
color: (selected == index) ? Colors.orange : Colors.grey,
|
|
),
|
|
),
|
|
SizedBox(height: 5),
|
|
Text(
|
|
label,
|
|
style: Theme.of(context).textTheme.headline6!.copyWith(
|
|
fontSize: 12,
|
|
color: (selected == index)
|
|
? Colors.orange
|
|
: Colors.grey.withOpacity(0.5),
|
|
),
|
|
)
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|