import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; class BottomNavigation extends StatelessWidget { final int currentIndex; final ValueChanged onTap; const BottomNavigation({ super.key, required this.currentIndex, required this.onTap, }); @override Widget build(BuildContext context) { AppState appState = getIt.get(); final items = [ BottomNavItem(icon: AppAssets.homeBottom, label: LocaleKeys.home.tr()), appState.isAuthenticated ? BottomNavItem(icon: AppAssets.myFilesBottom, label: LocaleKeys.myFiles.tr()) : BottomNavItem(icon: AppAssets.feedback, label: LocaleKeys.feedback.tr()), BottomNavItem( icon: AppAssets.bookAppoBottom, label: LocaleKeys.appointment.tr(), iconSize: 27, isSpecial: true, ), appState.isAuthenticated ? BottomNavItem(icon: AppAssets.toDoBottom, label: LocaleKeys.todoList.tr()) : BottomNavItem(icon: AppAssets.news, label: LocaleKeys.news.tr()) , BottomNavItem(icon: AppAssets.servicesBottom, label: LocaleKeys.services2.tr()), ]; return Container( decoration: _containerDecoration, padding: _containerPadding, child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: List.generate( items.length, (index) => _buildNavItem(items[index], index), ), ), ); } Widget _buildNavItem(BottomNavItem item, int index) { final bool isSelected = currentIndex == index; return GestureDetector( onTap: () => onTap(index), behavior: HitTestBehavior.opaque, child: Column( mainAxisSize: MainAxisSize.min, children: [ Center( child: Utils.buildSvgWithAssets( icon: item.icon, height: item.iconSize.h, width: item.iconSize.h, // iconColor: isSelected ? Colors.black87 : Colors.black87, ), ), const SizedBox(height: 10), item.label.toText12( fontWeight:FontWeight.w500, // color: Colors.black87, // textAlign: TextAlign.center, ), SizedBox(height: item.isSpecial ? 5:0 ) ], ), ); } } class BottomNavItem { final String icon; final String label; final double iconSize; final bool isSpecial; const BottomNavItem({ required this.icon, required this.label, this.iconSize = 21, this.isSpecial = false, }); } // Constants const EdgeInsets _containerPadding = EdgeInsets.all(15); const BoxDecoration _containerDecoration = BoxDecoration( color: Colors.white, border: Border( top: BorderSide( color: AppColors.bottomNAVBorder, width: 0.5, ), ), );