uaestats_fe/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart
2026-05-29 17:45:19 +05:30

1034 lines
41 KiB
Dart
Executable File

import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
import 'package:uae_stat/config/theme/theme_provider.dart';
import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/l10n/app_localizations.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
import 'package:uae_stat/presentation/components/my_toggle.dart';
import 'package:uae_stat/presentation/Screens/app_tour/Target_content.dart';
import 'package:uae_stat/config/api_config.dart';
import 'package:uae_stat/lib/core/routing/app_router.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/app_drawer.dart';
class BaseScaffold extends ConsumerStatefulWidget {
const BaseScaffold({
super.key,
required this.body,
required this.title,
this.actions,
this.showDivider = false,
this.dividerColor,
this.navBackArrow,
this.showBackButton = false,
this.colorChange = false,
this.mycenterTitle = false,
this.appbarColor = Colors.white,
this.mytitleColor,
this.bottomColor,
this.backgroundColor = Colors.white,
});
final Widget body;
final Widget title;
final Widget? navBackArrow;
final Color? dividerColor;
final bool showDivider;
final bool showBackButton;
final bool colorChange;
final bool? mycenterTitle;
final List<Widget>? actions;
final Color? bottomColor;
final Color? appbarColor, mytitleColor;
final Color? backgroundColor;
@override
_BaseScaffoldState createState() => _BaseScaffoldState();
}
class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
// final _pb = PocketBase('https://pb.venbait.in');
late TutorialCoachMark tutorialCoachMark;
late List<TargetFocus> appBarTargets;
final GlobalKey bottomNavKey = GlobalKey();
final GlobalKey toggleKey = GlobalKey();
final GlobalKey drawerKey = GlobalKey();
late double toggleHeight = 0;
late final Locale locale;
List<Map<String, dynamic>> notifications = [];
List<String> userReadedNotiOrNot = [];
int notificationCount = 0;
@override
void initState() {
super.initState();
locale = ref.read(localeProvider) ?? const Locale('en');
WidgetsBinding.instance.addPostFrameCallback((_) {
_startAppbarTour();
_loadReadNotifications();
fetchNotifications(locale.languageCode);
});
}
//Method to Start App Tour
void _startAppbarTour() {
final scaffoldProvider = ref.watch(scaffoldTourProvider);
_calculatetooglePosition();
if (!scaffoldProvider) {
// Show Home Tour
_initTarget();
tutorialCoachMark = TutorialCoachMark(
paddingFocus: 0,
useSafeArea: true,
pulseEnable: false,
hideSkip: true,
targets: appBarTargets, // Ensure `homeTargets` is defined for Home Tour
onFinish: () {
ref.read(homeTourProvider.notifier).state = true;
},
)..show(context: context);
}
}
void _calculatetooglePosition() {
final RenderBox cardRenderBox =
toggleKey.currentContext!.findRenderObject() as RenderBox;
final Offset cardPosition = cardRenderBox.localToGlobal(Offset.zero);
final Size cardSize = cardRenderBox.size;
toggleHeight = cardSize.height;
}
Future<void> handleSkip() async {
tutorialCoachMark.skip();
final prefs = await SharedPreferences.getInstance();
String? loginCount = prefs.getString('login_count');
if (loginCount == '1') {
await prefs.setString('login_count', '2');
}
ref.read(chartsTourProvider.notifier).state = true;
ref.read(previousChartsTourProvider.notifier).state = true;
ref.read(homeTourProvider.notifier).state = true;
ref.read(previousHomeTourProvider.notifier).state = true;
ref.read(scaffoldTourProvider.notifier).state = true;
ref.read(previousScaffoldTourProvider.notifier).state = true;
}
void _initTarget() {
final double screenWidth = MediaQuery.of(context).size.width;
final double screenHeight = MediaQuery.of(context).size.height;
appBarTargets = [
TargetFocus(
enableTargetTab: false,
identify: 'bottomNav',
keyTarget: bottomNavKey,
shape: ShapeLightFocus.RRect, // Rounded rectangle highlight
contents: [
createTargetContent(
text: AppLocalizations.of(context)!.tour_navBar,
alignment: ContentAlign.top,
space: 0,
gap: 100,
),
TargetContent(
align: ContentAlign.top,
child: SizedBox(
width: double.infinity,
height: MediaQuery.of(context).size.height *
0.30, // Set an appropriate height for the Stack
child: Stack(
children: [
Positioned(
bottom: 25,
left: 16,
right: 16,
child: Column(
children: [
Align(
alignment: Alignment.bottomRight,
child: Padding(
padding: const EdgeInsets.only(right: 10.0),
child: Text(
'5/7',
style: TextStyle(
color: Colors.white,
fontSize: 14,
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
),
),
),
const SizedBox(height: 5),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ElevatedButton(
onPressed: () => handleSkip(),
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
side: const BorderSide(color: Colors.white),
backgroundColor: Colors.transparent,
elevation: 0,
),
child: Text(
AppLocalizations.of(context)!.skip,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Colors.white,
fontSize: 14,
),
),
),
Row(
children: [
Container(
decoration: BoxDecoration(
shape: BoxShape.circle,
color: locale.languageCode == 'ar'
? Color(0xFF7DAFBC)
: null,
border: Border.all(
color: locale.languageCode == 'ar'
? Color(0xFF7DAFBC)
: Colors.white,
width: 2.0),
),
child: IconButton(
icon: const Icon(
Icons.arrow_back,
// color: Colors.white,
color: Colors.grey,
),
onPressed: () {
if (locale.languageCode == 'ar') {
tutorialCoachMark.next();
} else {
tutorialCoachMark.finish();
ref
.read(scaffoldTourProvider.notifier)
.state = true;
ref
.read(previousChartsTourProvider
.notifier)
.state = false;
context.go(
AppRoutes.datasetDetailPath(
dataSet: 'marriages',
bgColor: '0xFFAA8E83',
mainTopic: 'Demography',
title: 'Marriages',
kpi: 'marriages',
),
);
}
},
),
),
const SizedBox(width: 10),
Container(
decoration: BoxDecoration(
shape: BoxShape.circle,
color: locale.languageCode == 'ar'
? null
: Color(0xFF7DAFBC),
border: Border.all(
color: locale.languageCode == 'ar'
? Colors.white
: Color(0xFF7DAFBC),
width: 1),
),
child: IconButton(
icon: const Icon(Icons.arrow_forward,
color: Colors.white),
onPressed: () {
if (locale.languageCode == 'ar') {
tutorialCoachMark.finish();
ref
.read(scaffoldTourProvider.notifier)
.state = true;
ref
.read(previousChartsTourProvider
.notifier)
.state = false;
context.go(
AppRoutes.datasetDetailPath(
dataSet: 'marriages',
bgColor: '0xFFAA8E83',
mainTopic: 'اجتماعي',
title: 'الزواج',
key: 'home',
kpi: 'marriages',
),
);
} else {
tutorialCoachMark.next();
}
},
),
),
],
),
],
),
],
),
),
],
),
),
),
],
),
TargetFocus(
enableTargetTab: false,
identify: 'drawerKey',
keyTarget: drawerKey,
shape: ShapeLightFocus.RRect,
radius: 0, // No rounded corners
paddingFocus: 1, // Rounded rectangle highlight
contents: [
createTargetContent(
text: AppLocalizations.of(context)!.mainMenu,
alignment: ContentAlign.bottom,
space: 55,
gap: 55,
),
TargetContent(
align: ContentAlign.bottom,
child: SizedBox(
width: double.infinity,
height: MediaQuery.of(context).size.height * 0.80,
child: Stack(
children: [
Positioned(
bottom: 40,
left: 16,
right: 16,
child: Column(
children: [
Align(
alignment: Alignment.bottomRight,
child: Padding(
padding: const EdgeInsets.only(right: 10.0),
child: Text(
'6/7',
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Colors.white,
fontSize: 14,
),
),
),
),
const SizedBox(height: 5),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ElevatedButton(
onPressed: () => handleSkip(),
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
side: const BorderSide(color: Colors.white),
backgroundColor: Colors.transparent,
elevation: 0,
),
child: Text(
// 'Skip',
AppLocalizations.of(context)!.skip,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Colors.white,
fontSize: 14,
),
),
),
Row(
children: [
Container(
decoration: BoxDecoration(
shape: BoxShape.circle,
color: locale.languageCode == 'ar'
? Color(0xFF7DAFBC)
: null,
border: Border.all(
color: locale.languageCode == 'ar'
? Color(0xFF7DAFBC)
: Colors.white,
width: 2.0,
),
),
child: IconButton(
icon: const Icon(
Icons.arrow_back,
// color: Colors.white,
color: Colors.grey,
),
onPressed: () {
locale.languageCode == 'ar'
? tutorialCoachMark.next()
: tutorialCoachMark.previous();
},
),
),
const SizedBox(width: 10),
Container(
decoration: BoxDecoration(
shape: BoxShape.circle,
color: locale.languageCode == 'ar'
? null
: Color(0xFF7DAFBC),
border: Border.all(
color: locale.languageCode == 'ar'
? Colors.white
: Color(0xFF7DAFBC),
width: 1),
),
child: IconButton(
icon: const Icon(
Icons.arrow_forward,
color: Colors.white,
),
onPressed: () {
locale.languageCode == 'ar'
? tutorialCoachMark.previous()
: tutorialCoachMark.next();
},
),
),
],
),
],
),
],
),
),
],
),
),
),
TargetContent(
padding: EdgeInsets.only(
right: locale.languageCode == 'ar' ? 0 : screenWidth * 0.7,
top: 25,
left: locale.languageCode == 'ar' ? screenWidth * 0.7 : 0,
),
align: locale.languageCode == 'ar'
? ContentAlign.left
: ContentAlign.right,
child: Container(
width: 200,
height: 100,
child: Stack(
children: [
Image.asset(
locale.languageCode == 'ar'
? 'assets/app_tour/rightDown.png' // Arabic locale image
: 'assets/app_tour/leftDown2.png', // Default image
fit: BoxFit.contain,
),
// Positioned(
// top: 0,
// left: MediaQuery.of(context).size.width* 0.5,
// child: SizedBox(
// width: 50,
// height: 100,
// child: Image.asset(
// 'assets/app_tour/bookmark2.png',
// fit: BoxFit.contain,
// ),
// ),
// ),
],
),
),
),
],
),
TargetFocus(
enableTargetTab: false,
identify: 'toggleKey',
keyTarget: toggleKey,
shape: ShapeLightFocus.RRect,
radius: 0,
paddingFocus: 0, // Rounded rectangle highlight
contents: [
createTargetContent(
text: AppLocalizations.of(context)!.toggle,
space: 50,
alignment: ContentAlign.bottom,
gap: 50,
),
TargetContent(
align: ContentAlign.bottom,
child: SizedBox(
width: double.infinity,
height: MediaQuery.of(context).size.height * 0.80,
child: Stack(
children: [
Positioned(
bottom: 37,
left: 16,
right: 16,
child: Column(
children: [
Align(
alignment: Alignment.bottomRight,
child: Padding(
padding: const EdgeInsets.only(right: 10.0),
child: Text(
'7/7',
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Colors.white,
fontSize: 14,
),
),
),
),
const SizedBox(height: 5),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ElevatedButton(
onPressed: () => handleSkip(),
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
side: const BorderSide(color: Colors.white),
backgroundColor: Colors.transparent,
elevation: 0,
),
child: Text(
AppLocalizations.of(context)!.skip,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Colors.white,
fontSize: 14,
),
),
),
Row(
children: [
Container(
decoration: BoxDecoration(
shape: BoxShape.circle,
border: Border.all(
color: Colors.white, width: 2.0),
),
child: IconButton(
icon: Icon(
locale.languageCode == 'ar'
? Icons.arrow_forward
: Icons.arrow_back,
// color: Colors.white,
color: Colors.grey,
),
onPressed: () {
tutorialCoachMark.previous();
},
),
),
const SizedBox(width: 10),
ElevatedButton(
onPressed: () async {
final prefs =
await SharedPreferences.getInstance();
String? loginCount =
prefs.getString('login_count');
if (loginCount == '1') {
await prefs.setString('login_count', '2');
}
ref
.read(chartsTourProvider.notifier)
.state = true;
ref
.read(
previousChartsTourProvider.notifier)
.state = true;
ref.read(homeTourProvider.notifier).state =
true;
ref
.read(previousHomeTourProvider.notifier)
.state = true;
ref
.read(scaffoldTourProvider.notifier)
.state = true;
ref
.read(previousScaffoldTourProvider
.notifier)
.state = true;
tutorialCoachMark.finish();
},
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
side: const BorderSide(color: Colors.white),
backgroundColor: Colors.white,
elevation: 0,
),
child: Text(
AppLocalizations.of(context)!.got_it,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Color(0xFF7DAFBC),
fontSize: 14,
),
),
),
],
),
],
),
],
),
),
],
),
),
),
TargetContent(
padding: EdgeInsets.only(
left: locale.languageCode == 'ar' ? 0 : screenWidth * 0.7,
top: toggleHeight,
right: locale.languageCode == 'ar' ? screenWidth * 0.7 : 0,
),
align: locale.languageCode == 'ar'
? ContentAlign.right
: ContentAlign.left,
child: Container(
width: 200,
height: 200,
child: Stack(
children: [
Image.asset(
locale.languageCode == 'ar'
? 'assets/app_tour/leftDown2.png' // Arabic locale image
: 'assets/app_tour/rightDown.png', // Default image
fit: BoxFit.contain,
)
],
),
),
),
],
),
];
}
Future<void> _loadReadNotifications() async {
final prefs = await SharedPreferences.getInstance();
userReadedNotiOrNot = prefs.getStringList('read_notification_ids') ?? [];
}
Future<void> fetchNotifications(locale) async {
final baseUrl = apiUrl + 'api/getNotification';
try {
final response = await http.get(Uri.parse('$baseUrl?language=$locale'),
headers: {'APP_SIGNATURE': 'fcsc.gov.ae.X7pL9qZm2A'});
if (response.statusCode == 200) {
final Map<String, dynamic> jsonResponse =
jsonDecode(response.body); // Decode JSON
if (jsonResponse['message'] == 'Success') {
setState(() {
notifications = List<Map<String, dynamic>>.from(
jsonResponse['data']); // Assign decoded data
// isLoading = false;
});
_processNotifications(notifications, userReadedNotiOrNot);
} else {
throw Exception('Failed to load data');
}
} else {
throw Exception(
'Failed to load data with status code ${response.statusCode}');
}
} catch (e) {}
}
void _processNotifications(
List<Map<String, dynamic>> notification, List<String> push) {
int count = 0;
for (var product in notification) {
if (push.contains(product['id'])) {
count++;
}
}
notificationCount = count;
}
// Future<void> logout() async {
// final prefs = await SharedPreferences.getInstance();
// // setState(() {
// // isLoggedOut = true;
// // });
// // prefs.clear();
// await _repo.logout();
// // state = const AsyncData(null);
// // _pb.authStore.clear();
// // await _secureStorage.delete(key: "FlutterSecureStorage.session");
// prefs.clear();
// context.go('/login');
// }
// void _showThemeDialog(BuildContext context) async {
// AppTheme? result = await showDialog<AppTheme>(
// context: context,
// builder: (context) => ThemeSelectorDialog(initialTheme: AppTheme.system),
// );
//
// if (result != null) {
// // You can now use `result` to apply the selected theme
// print('Selected theme: $result');
// final prefs = await SharedPreferences.getInstance();
// final userId = prefs.getString('userId') ?? '';
// // Example: save to PocketBase or local preferences
// final themeService = ThemeBaseService();
// await themeService.updateUserTheme(userId, result.name);
// }
// }
// void showThemeDialog(BuildContext context, WidgetRef ref) async {
// final currentTheme = ref.read(themeProvider);
// final current = currentTheme == ThemeMode.light
// ? AppTheme.light
// : currentTheme == ThemeMode.dark
// ? AppTheme.dark
// : AppTheme.system;
//
// final selected = await showDialog<AppTheme>(
// context: context,
// builder: (context) => ThemeSelectorDialog(initialTheme: current),
// );
//
// if (selected != null) {
// ref.read(themeProvider.notifier).updateTheme(selected);
// final themeService = ThemeBaseService();
// await themeService.updateUserTheme(userId, selected.name);
// }
// }
// void showThemeDialog(BuildContext context, WidgetRef ref) async {
// final currentTheme = ref.read(themeProvider);
// final current = currentTheme == ThemeMode.light
// ? AppTheme.light
// : currentTheme == ThemeMode.dark
// ? AppTheme.dark
// : AppTheme.system;
//
// final selected = await showDialog<AppTheme>(
// context: context,
// builder: (context) => ThemeSelectorDialog(initialTheme: current),
// );
//
// if (selected != null) {
// // Update app theme locally
// ref.read(themeProvider.notifier).updateTheme(selected);
//
// // Detect real system brightness if 'system' is selected
// String themeToSend;
// if (selected == AppTheme.system) {
// final brightness = MediaQuery.of(context).platformBrightness;
// themeToSend = brightness == Brightness.dark ? 'dark' : 'light';
// } else {
// themeToSend = selected.name;
// }
//
// // Save to PocketBase
// await ThemeBaseService().updateUserTheme(userId, themeToSend);
// }
// }
@override
Widget build(BuildContext context) {
final locale = ref.watch(localeProvider);
double mywidth = MediaQuery.of(context).size.width;
final isDarkTheme = ref.watch(themeProvider) == ThemeMode.dark;
return Scaffold(
backgroundColor: widget.backgroundColor,
// backgroundColor: Colors.white,
appBar: AppBar(
title: Padding(
padding: EdgeInsets.only(top: 10),
child: Align(
alignment: (locale?.languageCode == 'ar')
? Alignment.centerRight
: Alignment.centerLeft,
child: DefaultTextStyle(
style: TextStyle(
color: isDarkTheme ? Colors.white : Colors.black,
// color: widget.colorChange ? Colors.white : Color(0xFFFFFFFF),
fontSize: 22,
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontWeight: FontWeight.w500,
),
child: widget.title,
),
),
),
scrolledUnderElevation: 0,
titleSpacing: 0,
flexibleSpace: Container(
decoration: BoxDecoration(
color: isDarkTheme ? Color(0xFF000000) : Color(0xFFFFFFFF),
),
),
// flexibleSpace: (isDarkTheme && currentRoute == '/myhomepage')
// ? Container(
// decoration: const BoxDecoration(
// image: DecorationImage(
// image: AssetImage('assets/dark_bg.png'),
// fit: BoxFit.cover,
// ),
// ),
// )
// : (isDarkTheme && currentRoute == '/uaenumbers')
// ? Container(
// decoration: const BoxDecoration(
// color: Color(0xFF333333),
// ),
// )
// : null,
backgroundColor: widget.appbarColor ?? Colors.white,
leadingWidth: widget.showBackButton ? mywidth * 0.18 : null,
bottom: widget.showDivider
? PreferredSize(
preferredSize: Size.fromHeight(1), // Height of the line
child: Container(
color: widget.dividerColor, // Line color
height: 1, // Line thickness
),
)
: null,
// bottom: widget.showDivider
// ? PreferredSize(
// preferredSize: Size.fromHeight(1), // Height of the line
// child: Container(
// color: widget.dividerColor,
// width: double.infinity,// Line color
// height: 1, // Line thickness
// ),
// )
// : null,
actions: widget.actions ??
[
// IconButton(
// onPressed: () {},
// icon: const Icon(Icons.toggle_off_outlined),
// ),
MyToggle(
key: toggleKey,
isOn: locale?.languageCode == 'en',
knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN',
pathColorWhenOn: Color(0xFFD9D9D9),
pathColorWhenOff: Color(0xFFD9D9D9),
knobTextStyleWhenOn: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
knobTextStyleWhenOff: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
onTap: () {
ref.read(localeProvider.notifier).toggleLocale();
},
),
],
leading: Padding(
padding: const EdgeInsets.only(top: 7.0, left: 4),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
if (widget.showBackButton == true)
SizedBox(
width: 25,
height: 25,
child: IconButton(
padding: EdgeInsets.zero,
constraints: BoxConstraints(),
// color: widget.colorChange ? Colors.white : Colors.black,
// color: isDarkTheme
// ? widget.colorChange
// ? Colors.black
// : Colors.white
// : widget.colorChange
// ? Colors.white
// : Colors.black,
color: isDarkTheme ? Colors.white : Colors.black,
icon: const Icon(Icons.arrow_back_ios_new, size: 24),
onPressed: () {
if (widget.navBackArrow is Text &&
(widget.navBackArrow as Text).data ==
'notification') {
context.go('/notification');
} else {
context.pop();
}
},
),
),
SizedBox(
width: 7,
),
Builder(
builder: (BuildContext context) {
return SizedBox(
width: 30,
height: 30,
child: IconButton(
padding: EdgeInsets.zero,
constraints: BoxConstraints(),
key: drawerKey,
color: isDarkTheme ? Colors.white : Color(0xFF000000),
icon: const Icon(Icons.menu, size: 30),
onPressed: () {
Scaffold.of(context).openDrawer();
},
),
);
},
),
],
),
),
),
drawer: const UaeStatsDrawer(),
bottomNavigationBar: SizedBox(key: bottomNavKey, height: 0),
// BottomNavigationBar(
// backgroundColor: isDarkTheme ? Color(0xFF00000080) : Colors.white,
// currentIndex: _getSelectedIndex(currentRoute),
// onTap: (index) => _onItemTapped(context, index),
// type: BottomNavigationBarType.fixed,
// items: [
// BottomNavigationBarItem(
// icon: Padding(
// padding:
// const EdgeInsets.only(bottom: 4), // Adjust this for spacing
// child: Image.asset(
// BottomBarAssetIconPath.home,
// color: _getSelectedIndex(currentRoute) == 0
// ? Colors.black
// : Color(0xFF989898),
// width: 23.98,
// height: 25,
// ),
// ),
// // label: 'Home',
// label: AppLocalizations.of(context)!.nav_home,
// ),
// BottomNavigationBarItem(
// // icon: Icon(Icons.map),
// icon: Padding(
// padding:
// const EdgeInsets.only(bottom: 4), // Adjust this for spacing
// child: Image.asset(
// BottomBarAssetIconPath.uaeMap,
// color: _getSelectedIndex(currentRoute) == 1
// ? Colors.black
// : Color(0xFF989898),
// width: 23.98,
// height: 25,
// ),
// ),
// // label: 'UAE Numbers'
// label: AppLocalizations.of(context)!.nav_uae,
// ),
// BottomNavigationBarItem(
// icon: Padding(
// padding:
// const EdgeInsets.only(bottom: 4), // Adjust this for spacing
// child: Image.asset(
// BottomBarAssetIconPath.ranking,
// color: _getSelectedIndex(currentRoute) == 2
// ? Colors.black
// : Color(0xFF989898),
// width: 23.98,
// height: 25,
// ),
// ),
// // label: 'Competitiveness',
// label: AppLocalizations.of(context)!.nav_competitiveness,
// ),
// BottomNavigationBarItem(
// icon: Padding(
// padding:
// const EdgeInsets.only(bottom: 4), // Adjust this for spacing
// child: Image.asset(
// BottomBarAssetIconPath.globe,
// color: _getSelectedIndex(currentRoute) == 3
// ? Colors.black
// : Color(0xFF989898),
// width: 23.98,
// height: 25,
// ),
// ),
// // label: 'Country Profile',
// label: AppLocalizations.of(context)!.country_profile,
// ),
// ],
// key: bottomNavKey,
// selectedItemColor: Colors.black,
// unselectedItemColor: Colors.grey,
// selectedLabelStyle: TextStyle(
// fontFamily: context.translate(
// 'Roboto',
// 'NotoKufi',
// ),
// fontSize: 10, // Font size for unselected label
// ),
// unselectedLabelStyle: TextStyle(
// fontFamily: context.translate(
// 'Roboto',
// 'NotoKufi',
// ),
// fontSize: 10, // Font size for unselected label
// ),
// showUnselectedLabels: true,
// ),
body: widget.body,
);
}
}