From 1083b9b87fa85907354bc1d02e6f562adc655ca4 Mon Sep 17 00:00:00 2001 From: Juki-shiba Date: Mon, 2 Jun 2025 18:55:10 +0530 Subject: [PATCH] country profile ph-2 --- .../arm64-v8a/configure_fingerprint.bin | 24 +- .../armeabi-v7a/configure_fingerprint.bin | 24 +- .../m4rj1019/x86/configure_fingerprint.bin | 24 +- .../m4rj1019/x86_64/configure_fingerprint.bin | 24 +- lib/config/my_router.dart | 12 +- .../Competitiveness/competitiveness.dart | 123 ++++++++- .../DetailedCountryProfilePage.dart | 233 ++++++++++++++++++ .../Country_Profile/country_profile.dart | 131 ++++++---- .../drawer_routes/custom_drawer_routes.dart | 4 + 9 files changed, 488 insertions(+), 111 deletions(-) create mode 100644 lib/presentation/Screens/Bottom Navigation Pages/Country_Profile/DetailedCountryProfilePage.dart diff --git a/android/app/.cxx/Debug/m4rj1019/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/Debug/m4rj1019/arm64-v8a/configure_fingerprint.bin index c4270950..f2d36262 100644 --- a/android/app/.cxx/Debug/m4rj1019/arm64-v8a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/m4rj1019/arm64-v8a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Logd b `C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  Ҷ2a +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  Ҷ2a _ -]C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\android_gradle_build.json  2 축2f +]C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\android_gradle_build.json  2 축2f d -bC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\android_gradle_build_mini.json  2 2S +bC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\android_gradle_build_mini.json  2 2S Q -OC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\build.ninja  2 2W +OC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\build.ninja  2 2W U -SC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\build.ninja.txt  2\ +SC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\build.ninja.txt  2\ Z -XC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\build_file_index.txt  2 S 2] +XC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\build_file_index.txt  2 S 2] [ -YC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\compile_commands.json  2a +YC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\compile_commands.json  2a _ -]C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\compile_commands.json.bin  2 g +]C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\compile_commands.json.bin  2 g e -cC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\metadata_generation_command.txt  2 +cC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\metadata_generation_command.txt  2  2Z X -VC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\prefab_config.json  2  ( 2_ +VC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\prefab_config.json  2  ( 2_ ] -[C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\symbol_folder_index.txt  2  R 2W +[C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\arm64-v8a\symbol_folder_index.txt  2  R 2W U -SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  2  2 \ No newline at end of file +SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  2  2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/m4rj1019/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/Debug/m4rj1019/armeabi-v7a/configure_fingerprint.bin index 43e8b36e..44aa031b 100644 --- a/android/app/.cxx/Debug/m4rj1019/armeabi-v7a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/m4rj1019/armeabi-v7a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Logf d bC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  ږ2c +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  հ2  ږ2c a -_C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\android_gradle_build.json  2 얖2h +_C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\android_gradle_build.json  ְ2 얖2h f -dC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\android_gradle_build_mini.json  2 2U +dC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\android_gradle_build_mini.json  ְ2 2U S -QC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\build.ninja  2 2Y +QC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\build.ninja  ְ2 2Y W -UC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\build.ninja.txt  2^ +UC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\build.ninja.txt  ְ2^ \ -ZC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\build_file_index.txt  2 S 2_ +ZC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\build_file_index.txt  ְ2 S 2_ ] -[C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\compile_commands.json  2c +[C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\compile_commands.json  ְ2c a -_C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\compile_commands.json.bin  2 i +_C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\compile_commands.json.bin  ְ2 i g -eC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\metadata_generation_command.txt  2 +eC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\metadata_generation_command.txt  ְ2  ט2\ Z -XC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\prefab_config.json  2  ( 2a +XC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\prefab_config.json  ְ2  ( 2a _ -]C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\symbol_folder_index.txt  2  T 2W +]C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\symbol_folder_index.txt  ְ2  T 2W U -SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  2  2 \ No newline at end of file +SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ְ2  2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/m4rj1019/x86/configure_fingerprint.bin b/android/app/.cxx/Debug/m4rj1019/x86/configure_fingerprint.bin index 1fe208d9..9a8d3cbb 100644 --- a/android/app/.cxx/Debug/m4rj1019/x86/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/m4rj1019/x86/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log^ \ ZC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2[ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2[ Y -WC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\android_gradle_build.json  2 2` +WC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\android_gradle_build.json  2 2` ^ -\C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\android_gradle_build_mini.json  2 2M +\C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\android_gradle_build_mini.json  2 2M K -IC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\build.ninja  2 2Q +IC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\build.ninja  2 2Q O -MC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\build.ninja.txt  2V +MC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\build.ninja.txt  2V T -RC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\build_file_index.txt  2 S 2W +RC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\build_file_index.txt  2 S 2W U -SC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\compile_commands.json  2[ +SC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\compile_commands.json  2[ Y -WC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\compile_commands.json.bin  2 a +WC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\compile_commands.json.bin  2 a _ -]C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\metadata_generation_command.txt  2 +]C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\metadata_generation_command.txt  2  2T R -PC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\prefab_config.json  2  ( 2Y +PC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\prefab_config.json  2  ( 2Y W -UC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\symbol_folder_index.txt  2  L 2W +UC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\symbol_folder_index.txt  2  L 2W U -SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  2  2 \ No newline at end of file +SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  2  2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/m4rj1019/x86_64/configure_fingerprint.bin b/android/app/.cxx/Debug/m4rj1019/x86_64/configure_fingerprint.bin index 7bfb083a..9bfdc5f9 100644 --- a/android/app/.cxx/Debug/m4rj1019/x86_64/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/m4rj1019/x86_64/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Loga _ ]C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ȸ2  2^ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2^ \ -ZC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\android_gradle_build.json  ȸ2 2c +ZC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\android_gradle_build.json  2 2c a -_C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\android_gradle_build_mini.json  ȸ2 2P +_C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\android_gradle_build_mini.json  2 2P N -LC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\build.ninja  ȸ2 炗2T +LC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\build.ninja  2 炗2T R -PC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\build.ninja.txt  ȸ2Y +PC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\build.ninja.txt  2Y W -UC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\build_file_index.txt  ȸ2 S 2Z +UC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\build_file_index.txt  2 S 2Z X -VC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\compile_commands.json  ȸ2^ +VC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\compile_commands.json  2^ \ -ZC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\compile_commands.json.bin  ȸ2 d +ZC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\compile_commands.json.bin  2 d b -`C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\metadata_generation_command.txt  ȸ2 +`C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\metadata_generation_command.txt  2  2W U -SC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\prefab_config.json  ȸ2  ( 2\ +SC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\prefab_config.json  2  ( 2\ Z -XC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\symbol_folder_index.txt  ȸ2  O 2W +XC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\symbol_folder_index.txt  2  O 2W U -SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ȸ2  2 \ No newline at end of file +SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  2  2 \ No newline at end of file diff --git a/lib/config/my_router.dart b/lib/config/my_router.dart index 0d2352ea..cecb7edf 100644 --- a/lib/config/my_router.dart +++ b/lib/config/my_router.dart @@ -300,6 +300,7 @@ import 'package:go_router/go_router.dart'; import 'package:uae_stat/config/sessionCheckScreen.dart'; import 'package:uae_stat/domain/entities/session_entity.dart'; import 'package:uae_stat/infrastructure/data/p_auth_repo.dart'; +import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/DetailedCountryProfilePage.dart'; import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/UAE_Numbers/Social/marriages.dart'; import 'package:uae_stat/presentation/Screens/app_tour/WelcomePage.dart'; import 'package:uae_stat/presentation/Screens/auth_verification/forgot_password.dart'; @@ -652,7 +653,16 @@ final GoRouter router = GoRouter( builder: (context, state) => const CountryProfilePage(), ), - + GoRoute( + path: '/country-profile-detail', + builder: (context, state) { + final data = state.extra as Map; + return DetailedCountryProfilePage( + countryName: data['countryName']!, + flag: data['flag']!, + ); + }, + ), GoRoute( path: '/marriages', builder: (context, state) => Marriages(), diff --git a/lib/presentation/Screens/Bottom Navigation Pages/Competitiveness/competitiveness.dart b/lib/presentation/Screens/Bottom Navigation Pages/Competitiveness/competitiveness.dart index e2965362..6cd9b039 100644 --- a/lib/presentation/Screens/Bottom Navigation Pages/Competitiveness/competitiveness.dart +++ b/lib/presentation/Screens/Bottom Navigation Pages/Competitiveness/competitiveness.dart @@ -7,26 +7,129 @@ class Competitiveness extends StatelessWidget { @override Widget build(BuildContext context) { - double myheight = MediaQuery.of(context).size.height; - double mywidth = MediaQuery.of(context).size.width; return PopScope( - canPop: false, // Allow back navigation only if not login screen + canPop: false, onPopInvokedWithResult: (didPop, result) { if (didPop) return; - context.go('/myhomepage'); // Show exit confirmation dialog + context.go('/myhomepage'); }, child: BaseScaffold( - title: Center( - child: SizedBox( - height: myheight / 5, - width: mywidth / 3, - child: Image(image: AssetImage('assets/logos/uae_stat.png')))), + title: Center(child: Text("UAE Competitiveness")), body: CompetitivenessState(context), ), ); } Widget CompetitivenessState(BuildContext context) { - return Center(child: Text("Competitiveness")); + final List> reports = [ + { + 'rank': 44, + 'title': 'Prosperity Index (2023)', + 'logo': 'assets/backgrounds/share/fcsc.svg', + 'borderColor': Colors.blue, + }, + { + 'rank': 26, + 'title': 'World Happiness Report (2023)', + 'logo': 'assets/backgrounds/share/fcsc.svg', + 'borderColor': Color(0xFF844F36), + }, + { + 'rank': 7, + 'title': 'Logistics Performance Index (2023)', + 'logo': 'assets/backgrounds/share/fcsc.svg', + 'borderColor': Colors.blue, + }, + { + 'rank': 10, + 'title': 'Global Soft Power Index (2023)', + 'logo': 'assets/backgrounds/share/fcsc.svg', + 'borderColor': Colors.blue, + }, + { + 'rank': 76, + 'title': 'Global Terrorism Index (2023)', + 'logo': 'assets/backgrounds/share/fcsc.svg', + 'borderColor': Color(0xFF844F36), + }, + { + 'rank': 10, + 'title': 'The World Competitiveness Yearbook (2023)', + 'logo': 'assets/backgrounds/share/fcsc.svg', + 'borderColor': Colors.blue, + }, + { + 'rank': 71, + 'title': 'Global Gender Gap Report (2023)', + 'logo': 'assets/backgrounds/share/fcsc.svg', + 'borderColor': Colors.blue, + }, + { + 'rank': 29, + 'title': 'Competitive Industrial Performance Index (2023)', + 'logo': 'assets/backgrounds/share/fcsc.svg', + 'borderColor': Color(0xFF844F36), + }, + ]; + + return Column( + children: [ + SizedBox(height: 16), + Text( + '(22) Competitive Reports', + style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600), + ), + SizedBox(height: 12), + Expanded( + child: ListView.builder( + itemCount: reports.length, + itemBuilder: (context, index) { + final report = reports[index]; + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + child: Container( + decoration: BoxDecoration( + border: Border.all(color: report['borderColor']), + borderRadius: BorderRadius.circular(12), + ), + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + child: Row( + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Rank', + style: TextStyle(fontSize: 12, color: Colors.grey[600]), + ), + Text( + '${report['rank']}', + style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), + ), + ], + ), + SizedBox(width: 12), + Expanded( + child: Text( + report['title'], + style: TextStyle(fontSize: 14, fontWeight: FontWeight.w500), + ), + ), + SizedBox(width: 4), + Image.asset( + report['logo'], + width: 10, + height: 10, + fit: BoxFit.contain, + ), + ], + ), + ), + ); + }, + ), + ), + ], + ); } } diff --git a/lib/presentation/Screens/Bottom Navigation Pages/Country_Profile/DetailedCountryProfilePage.dart b/lib/presentation/Screens/Bottom Navigation Pages/Country_Profile/DetailedCountryProfilePage.dart new file mode 100644 index 00000000..055f6aec --- /dev/null +++ b/lib/presentation/Screens/Bottom Navigation Pages/Country_Profile/DetailedCountryProfilePage.dart @@ -0,0 +1,233 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart'; + +class DetailedCountryProfilePage extends StatelessWidget { + final String countryName; + final String flag; + + const DetailedCountryProfilePage({ + Key? key, + required this.countryName, + required this.flag, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + double width = MediaQuery.of(context).size.width; + + return BaseScaffold( + title: const Text('Country Profile'), + hasDrawer: false, + leading: const BackButton(), + body: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + children: [ + // Country name and flag + Center( + child: Column( + children: [ + Text(flag, style: const TextStyle(fontSize: 48)), + const SizedBox(height: 8), + Text( + countryName.toUpperCase(), + style: const TextStyle( + fontSize: 22, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + const SizedBox(height: 24), + + // Government Officials + Wrap( + spacing: 16, + runSpacing: 16, + alignment: WrapAlignment.center, + children: const [ + _LeaderCard( + title: 'President', + name: 'Alberto Fernández', + imagePath: 'assets/backgrounds/share/fcsc.svg', + ), + _LeaderCard( + title: 'Vice President', + name: 'Cristina Fernández De Kirchner', + imagePath: 'assets/backgrounds/share/fcsc.svg', + ), + _LeaderCard( + title: 'Chief of the Cabinet\nof Ministers', + name: 'Agustin Rossi', + imagePath: 'assets/backgrounds/share/fcsc.svg', + ), + _LeaderCard( + title: 'President of Chamber\nof Deputies', + name: 'Cecilia Moreau', + imagePath: 'assets/backgrounds/share/fcsc.svg', + ), + ], + ), + + const SizedBox(height: 24), + + // Category Buttons + Wrap( + spacing: 16, + runSpacing: 16, + alignment: WrapAlignment.center, + children: [ + _CategoryButton( + title: 'Demography', + color: Color(0xFFD7C1AF), + onTap: () { + // Add Demography popup or navigation + }, + ), + _CategoryButton( + title: 'GDP', + color: Color(0xFFAEC6CF), + onTap: () { + // Add GDP popup or navigation + }, + ), + _CategoryButton( + title: 'FDI', + color: Color(0xFFD7AFAF), + onTap: () => _showFDIPopup(context), + ), + _CategoryButton( + title: 'Trade', + color: Color(0xFFAFCFAF), + onTap: () => _showTradePopup(context), + ), + _CategoryButton( + title: 'Bilateral Trade', + color: Color(0xFF9FAFCF), + onTap: () { + // Add Bilateral Trade popup or navigation + }, + ), + ], + ) + ], + ), + ), + ), + ); + } +} + +class _LeaderCard extends StatelessWidget { + final String title; + final String name; + final String imagePath; + + const _LeaderCard({ + Key? key, + required this.title, + required this.name, + required this.imagePath, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return SizedBox( + width: 160, + child: Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.asset( + imagePath, + width: 160, + height: 120, + fit: BoxFit.cover, + ), + ), + const SizedBox(height: 8), + Text( + title, + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 13, + color: Colors.black54, + ), + ), + const SizedBox(height: 4), + Text( + name, + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ); + } +} + +class _CategoryButton extends StatelessWidget { + final String title; + final Color color; + final VoidCallback onTap; + + const _CategoryButton({ + Key? key, + required this.title, + required this.color, + required this.onTap, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: Container( + width: 160, + height: 70, + decoration: BoxDecoration( + color: color, + borderRadius: BorderRadius.circular(16), + ), + alignment: Alignment.center, + child: Text( + title, + style: const TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 16, + ), + textAlign: TextAlign.center, + ), + ), + ); + } +} +void _showTradePopup(BuildContext context) { + showDialog( + context: context, + builder: (context) => AlertDialog( + content: Image.asset('assets/images/Popup-Trade-EN.png'), + contentPadding: const EdgeInsets.all(8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), + ), + ); +} + +void _showFDIPopup(BuildContext context) { + showDialog( + context: context, + builder: (context) => AlertDialog( + content: Image.asset('assets/images/Popup-FDI-EN.png'), + contentPadding: const EdgeInsets.all(8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), + ), + ); +} + diff --git a/lib/presentation/Screens/Bottom Navigation Pages/Country_Profile/country_profile.dart b/lib/presentation/Screens/Bottom Navigation Pages/Country_Profile/country_profile.dart index 0fb20d47..441038c1 100644 --- a/lib/presentation/Screens/Bottom Navigation Pages/Country_Profile/country_profile.dart +++ b/lib/presentation/Screens/Bottom Navigation Pages/Country_Profile/country_profile.dart @@ -64,68 +64,90 @@ class _CountryProfilePageState extends ConsumerState { context.go('/myhomepage'); }, child: BaseScaffold( - title: Center( - child: SizedBox( - height: myheight / 5, - width: mywidth / 3, - child: const Image(image: AssetImage('assets/logos/uae_stat.png')), + title: Text( + context.translate( + 'Country Profile', + 'ملف الدولة', + ), + style: TextStyle( + fontFamily: context.translate( + 'Roboto', + 'NotoKufi', + ) ), ), body: Column( children: [ Padding( - padding: EdgeInsets.only(left: 12.0), - child: TextField( - controller: _searchController, - onChanged: (value) { - filterData(value); - }, - decoration: InputDecoration( - hintText: AppLocalizations.of(context)!.search, - hintStyle: TextStyle( - color: Color(0xFFAA8E83), - fontFamily: context.translate('Roboto', 'NotoKufi'), - fontSize: 14, - height: 1.8, - ), - prefixIconConstraints: BoxConstraints( - maxWidth: 42, - maxHeight: 42, - ), - prefixIcon: Container( - padding: EdgeInsets.only(right: 5, left: 5), - alignment: Alignment.center, - child: SvgPicture.asset( - MiscIconAssetPath.Search, - semanticsLabel: 'Search', - colorFilter: ColorFilter.mode(Color(0xFFAA8E83), BlendMode.srcIn), - height: 18, - width: 18, - ), - ), - suffixIcon: _searchController.text.isNotEmpty - ? IconButton( - icon: Icon( - Icons.clear, + padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 12.0), + child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(30.0), + border: Border.all(width: 1, color: Color(0xFFAA8E83)), + ), + child: TextField( + controller: _searchController, + onChanged: (value) { + filterData(value); + }, + decoration: InputDecoration( + hintText: AppLocalizations.of(context)!.searchCountry, + hintStyle: TextStyle( color: Color(0xFFAA8E83), - size: 18, + fontFamily: context.translate('Roboto', 'NotoKufi'), + fontSize: 14, + height: 1.8, ), - onPressed: () { - _searchController.clear(); - filterData(''); - }, - ) - : null, - contentPadding: EdgeInsets.symmetric(vertical: 9, horizontal: 18.0), - border: InputBorder.none, - // contentPadding: - // EdgeInsets.symmetric(vertical: 9, horizontal: 18.0), - // contentPadding: EdgeInsets.zero, + prefixIconConstraints: BoxConstraints( + maxWidth: 42, + maxHeight: 42, + ), + prefixIcon: Container( + padding: EdgeInsets.only(right: 5, left: 5), + alignment: Alignment.center, + child: SvgPicture.asset( + MiscIconAssetPath.Search, + semanticsLabel: 'Search', + colorFilter: ColorFilter.mode(Color(0xFFAA8E83), BlendMode.srcIn), + height: 18, + width: 18, + ), + ), + suffixIcon: _searchController.text.isNotEmpty + ? IconButton( + icon: Icon( + Icons.clear, + color: Color(0xFFAA8E83), + size: 18, + ), + onPressed: () { + _searchController.clear(); + filterData(''); + }, + ) + : null, + border: InputBorder.none, + contentPadding: EdgeInsets.symmetric(vertical: 9, horizontal: 18.0), + ), ), ), ), + + // Updated section for "No country found" Expanded( - child: ListView.builder( + child: filtered.isEmpty + ? Center( + child: Text( + 'No country found', + style: TextStyle( + fontSize: 16, + color: Colors.grey, + fontWeight: FontWeight.w500, + ), + ), + ) + : ListView.builder( itemCount: filtered.length, itemBuilder: (context, index) { final country = filtered[index]; @@ -135,7 +157,12 @@ class _CountryProfilePageState extends ConsumerState { style: const TextStyle(fontSize: 24), ), title: Text(country['name']!), - onTap: () {}, + onTap: () { + context.push('/country-profile-detail', extra: { + 'countryName': country['name'] as String, + 'flag': country['flag'] as String, + }); + }, ); }, ), diff --git a/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart b/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart index d58abdda..3bdd11d0 100644 --- a/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart +++ b/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart @@ -34,6 +34,8 @@ class BaseScaffold extends ConsumerStatefulWidget { super.key, required this.body, required this.title, + this.leading, + this.hasDrawer = true, this.actions, this.showDivider = false, this.dividerColor, @@ -47,6 +49,8 @@ class BaseScaffold extends ConsumerStatefulWidget { }); final Widget body; final Widget title; + final Widget? leading; + final bool hasDrawer; final Widget? navBackArrow; final Color? dividerColor; final bool showDivider;