TKK_E32221196/lib/app/modules/navbar/views/navbar_view.dart

91 lines
2.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../home/views/home_view.dart';
import '../../jadwal/views/jadwal_view.dart';
import '../controllers/navbar_controller.dart';
class NavbarView extends StatelessWidget {
const NavbarView({super.key});
@override
Widget build(BuildContext context) {
return GetBuilder<NavbarController>(
init: NavbarController(),
builder: (controller) {
return Scaffold(
body: IndexedStack(
index: controller.selectedIndex,
children: const [
HomeView(),
JadwalView(),
],
),
bottomNavigationBar: BottomAppBar(
color: Colors.blue,
elevation: 10,
child: LayoutBuilder(
builder: (context, constraints) {
double screenWidth = constraints.maxWidth;
double horizontalPadding = screenWidth * 0.1;
return Padding(
padding: EdgeInsets.symmetric(horizontal: horizontalPadding),
child: SizedBox(
height: 65,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
_buildNavItem(
icon: Icons.home,
label: 'Beranda',
isActive: controller.selectedIndex == 0,
onTap: () => controller.changeTabIndex(0),
),
_buildNavItem(
icon: Icons.schedule,
label: 'Jadwal',
isActive: controller.selectedIndex == 1,
onTap: () => controller.changeTabIndex(1),
),
],
),
),
);
},
),
),
);
},
);
}
static Widget _buildNavItem({
required IconData icon,
required String label,
required bool isActive,
required VoidCallback onTap,
}) {
return GestureDetector(
onTap: onTap,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
icon,
color: isActive ? Colors.white : Colors.white70,
),
const SizedBox(height: 4),
Text(
label,
style: TextStyle(
fontSize: 12,
color: isActive ? Colors.white : Colors.white70,
),
),
],
),
);
}
}