91 lines
2.7 KiB
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,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|