competitiveness ph-1

This commit is contained in:
Juki-shiba 2025-06-11 18:38:10 +05:30
parent 3aba16f9f9
commit 62ba6d52c7
7 changed files with 189 additions and 195 deletions

View File

@ -2,27 +2,27 @@ C/C++ Structured Loge
c
aC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ëËËÂõ2  Ì²Š¦ô2b
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ‘¼“ëõ2  Ì²Š¦ô2b
`
^C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\android_gradle_build.json  ëËËÂõ2¾ Ø²Š¦ô2g
^C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\android_gradle_build.json  ‘¼“ëõ2¾ Ø²Š¦ô2g
e
cC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\android_gradle_build_mini.json  ëËËÂõ2 粊¦ô2T
cC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\android_gradle_build_mini.json  ‘¼“ëõ2 粊¦ô2T
R
PC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\build.ninja  ëËËÂõ2<18>Ü Æ±Š¦ô2X
PC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\build.ninja  ‘¼“ëõ2<18>Ü Æ±Š¦ô2X
V
TC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\build.ninja.txt  ëËËÂõ2]
TC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\build.ninja.txt  ‘¼“ëõ2]
[
YC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\build_file_index.txt  ëËËÂõ2 S ¦ô2^
YC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\build_file_index.txt  ‘¼“ëõ2 S ¦ô2^
\
ZC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\compile_commands.json  ëËËÂõ2b
ZC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\compile_commands.json  ‘¼“ëõ2b
`
^C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\compile_commands.json.bin  ëËËÂõ2 h
^C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\compile_commands.json.bin  ‘¼“ëõ2 h
f
dC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\metadata_generation_command.txt  ëËËÂõ2
dC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\metadata_generation_command.txt  ‘¼“ëõ2
Ê 벊¦ô2[
Y
WC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\prefab_config.json  ëËËÂõ2  ( 첊¦ô2`
WC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\prefab_config.json  ‘¼“ëõ2  ( 첊¦ô2`
^
\C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\symbol_folder_index.txt  ìËËÂõ2  S í²Š¦ô2W
\C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\arm64-v8a\symbol_folder_index.txt  ‘¼“ëõ2  S í²Š¦ô2W
U
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ìËËÂõ2 § ÑÜÐßÓ2
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ‘¼“ëõ2 § ÑÜÐßÓ2

View File

@ -2,27 +2,27 @@ C/C++ Structured Logg
e
cC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  £ÌËÂõ2  啦ô2d
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ⼓ëõ2  啦ô2d
b
`C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\android_gradle_build.json  £ÌËÂõ2 땦ô2i
`C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\android_gradle_build.json  ⼓ëõ2Â 땦ô2i
g
eC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\android_gradle_build_mini.json  £ÌËÂõ2 <20>¦ô2V
eC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\android_gradle_build_mini.json  ⼓ëõ2 <20>¦ô2V
T
RC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\build.ninja  £ÌËÂõ2‹Ü Í“¦ô2Z
RC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\build.ninja  ⼓ëõ2‹Ü Í“¦ô2Z
X
VC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\build.ninja.txt  £ÌËÂõ2_
VC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\build.ninja.txt  ⼓ëõ2_
]
[C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\build_file_index.txt  £ÌËÂõ2 S —¦ô2`
[C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\build_file_index.txt  ⼓ëõ2 S —¦ô2`
^
\C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\compile_commands.json  £ÌËÂõ2d
\C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\compile_commands.json  ⼓ëõ2d
b
`C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\compile_commands.json.bin  £ÌËÂõ2 j
`C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\compile_commands.json.bin  ⼓ëõ2 j
h
fC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\metadata_generation_command.txt  £ÌËÂõ2
fC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\metadata_generation_command.txt  ⼓ëõ2
Ô¦ô2]
[
YC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\prefab_config.json  ¤ÌËÂõ2  ( ¦ô2b
YC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\prefab_config.json  ⼓ëõ2  ( ¦ô2b
`
^C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\symbol_folder_index.txt  ¤ÌËÂõ2  U •¦ô2W
^C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\armeabi-v7a\symbol_folder_index.txt  ⼓ëõ2  U •¦ô2W
U
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ¤ÌËÂõ2 § ÑÜÐßÓ2
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ⼓ëõ2 § ÑÜÐßÓ2

View File

@ -2,27 +2,27 @@ C/C++ Structured Log_
]
[C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÄÌËÂõ2  ½¦ô2\
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  <EFBFBD>½“ëõ2  ½¦ô2\
Z
XC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\android_gradle_build.json  ÄÌËÂõ2² <20>½¦ô2a
XC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\android_gradle_build.json  <EFBFBD>½“ëõ2² <20>½¦ô2a
_
]C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\android_gradle_build_mini.json  ÄÌËÂõ2 ”½¦ô2N
]C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\android_gradle_build_mini.json  <EFBFBD>½“ëõ2 ”½¦ô2N
L
JC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\build.ninja  ÄÌËÂõ2ãÛ ¢¼¦ô2R
JC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\build.ninja  <EFBFBD>½“ëõ2ãÛ ¢¼¦ô2R
P
NC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\build.ninja.txt  ÄÌËÂõ2W
NC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\build.ninja.txt  <EFBFBD>½“ëõ2W
U
SC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\build_file_index.txt  ÄÌËÂõ2 S —½¦ô2X
SC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\build_file_index.txt  <EFBFBD>½“ëõ2 S —½¦ô2X
V
TC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\compile_commands.json  ÄÌËÂõ2\
TC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\compile_commands.json  <EFBFBD>½“ëõ2\
Z
XC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\compile_commands.json.bin  ÄÌËÂõ2 b
XC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\compile_commands.json.bin  <EFBFBD>½“ëõ2 b
`
^C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\metadata_generation_command.txt  ÄÌËÂõ2
^C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\metadata_generation_command.txt  <EFBFBD>½“ëõ2
¬ •½¦ô2U
S
QC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\prefab_config.json  ÄÌËÂõ2  ( ½¦ô2Z
QC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\prefab_config.json  <EFBFBD>½“ëõ2  ( ½¦ô2Z
X
VC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\symbol_folder_index.txt  ÄÌËÂõ2  M ½¦ô2W
VC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86\symbol_folder_index.txt  <EFBFBD>½“ëõ2  M ½¦ô2W
U
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ÄÌËÂõ2 § ÑÜÐßÓ2
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  <EFBFBD>½“ëõ2 § ÑÜÐßÓ2

View File

@ -2,27 +2,27 @@ C/C++ Structured Logb
`
^C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\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_
]
[C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\android_gradle_build.json  êÌËÂõ2¸ œË¦ô2d
[C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\android_gradle_build.json  ó½“ëõ2¸ œË¦ô2d
b
`C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\android_gradle_build_mini.json  êÌËÂõ2 ŸË¦ô2Q
`C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\android_gradle_build_mini.json  ó½“ëõ2 ŸË¦ô2Q
O
MC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\build.ninja  ëÌËÂõ2òÛ «Ê¦ô2U
MC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\build.ninja  ó½“ëõ2òÛ «Ê¦ô2U
S
QC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\build.ninja.txt  ëÌËÂõ2Z
QC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\build.ninja.txt  ó½“ëõ2Z
X
VC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\build_file_index.txt  ëÌËÂõ2 S ¤Ë¦ô2[
VC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\build_file_index.txt  ó½“ëõ2 S ¤Ë¦ô2[
Y
WC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\compile_commands.json  ëÌËÂõ2_
WC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\compile_commands.json  ó½“ëõ2_
]
[C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\compile_commands.json.bin  ëÌËÂõ2 e
[C:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\compile_commands.json.bin  ó½“ëõ2 e
c
aC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\metadata_generation_command.txt  ëÌËÂõ2
aC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\metadata_generation_command.txt  ó½“ëõ2
» ¡Ë¦ô2X
V
TC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\prefab_config.json  ëÌËÂõ2  ( ¢Ë¦ô2]
TC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\prefab_config.json  ó½“ëõ2  ( ¢Ë¦ô2]
[
YC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\symbol_folder_index.txt  ëÌËÂõ2  P £Ë¦ô2W
YC:\flutter code\share\FCSC\android\app\.cxx\Debug\6k676t62\x86_64\symbol_folder_index.txt  ó½“ëõ2  P £Ë¦ô2W
U
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ëÌËÂõ2 § ÑÜÐßÓ2
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ó½“ëõ2 § ÑÜÐßÓ2

View File

@ -372,8 +372,8 @@ final GoRouter router = GoRouter(
routes: [
GoRoute(
path: '/',
// builder: (context, state) => LoginRoute(),
builder: (context, state) => SessionCheckScreen(),
builder: (context, state) => Competitiveness(),
// builder: (context, state) => SessionCheckScreen(),
),
// GoRoute(
// path: '/',
@ -673,7 +673,7 @@ final GoRouter router = GoRouter(
path: '/reportDetail',
builder: (context, state) {
final report = state.extra as Map<String, dynamic>;
return ReportDetailPage(report: report);
return ReportDetailPage();
},
),

View File

@ -118,6 +118,7 @@
"new_password_required": "كلمة المرور الجديدة مطلوبة",
"old_password_is_required": "كلمة المرور القديمة مطلوبة",
"confirm_password_is_required": "تأكيد كلمة المرور مطلوب",
"UAE Competitiveness":"التقارير التنافسيه لدولة الامارات",
"kpiCards": "يمكنك عرض بطاقات مؤشرات الأداء الرئيسية التفاعلية والرسوم البيانية لاستكشاف اتجاهات البيانات ومقارنة المقاييس الرئيسية بصريًا",
"home_topic": "اختر أي فئة (على سيبل المثال : الاقتصاد، الاجتماعية، البيئة) لاستكشاف مؤشرات الأداء الرئيسية التفصيلية ، التصورات، ورؤى البيانات .",

View File

@ -4,209 +4,202 @@ import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
class ReportDetailPage extends StatelessWidget {
final Map<String, dynamic> report;
const ReportDetailPage({super.key, required this.report});
const ReportDetailPage({super.key});
@override
Widget build(BuildContext context) {
double width = MediaQuery.of(context).size.width;
return BaseScaffold(
title: Text(
context.translate('UAE Competitiveness', 'القدرة التنافسية للإمارات'), // Add localization
context.translate(
'UAE Competitiveness',
'التقارير التنافسيه لدولة الامارات',
),
style: TextStyle(
fontFamily: context.translate('Roboto', 'NotoKufi'),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)
),
),
// hasDrawer: false,
showBackButton: true,
body: SingleChildScrollView(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Header Section: Report Title and Image
Center(
child: Column(
Container(
padding: EdgeInsets.all(12),
decoration: BoxDecoration(
color: Colors.grey[100],
borderRadius: BorderRadius.circular(12),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
'Prosperity Index (2023)',
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
),
Image.asset(
'assets/competitiveness/solo.png',
height: 80, // Increase size for prominence
),
const SizedBox(height: 8),
Text(
context.translate('Prosperity Index (2023)', 'مؤشر الازدهار (2023)'),
style: const TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold,
),
height: 71,
width: 84,
),
],
),
),
const SizedBox(height: 24),
// Description Section
Text(
context.translate(
"The Legatum Prosperity Index is published annually by the Legatum Institute. It is a policy-focused report that measures the current state of prosperity since 2007. Using the Prosperity Index framework, nations around the world can assess their strengths and weaknesses in order to determine the economic and strategic choices that need to be made to further build inclusive societies, open economies, and empowered people to drive greater levels of prosperity.",
"يُنشر مؤشر الازدهار الليجاتوم سنويًا من قبل معهد ليجاتوم. إنه تقرير يركز على السياسات ويقيس الحالة الحالية للازدهار منذ عام 2007. باستخدام إطار مؤشر الازدهار، يمكن للدول حول العالم تقييم نقاط قوتها وضعفها لتحديد الخيارات الاقتصادية والاستراتيجية التي يجب اتخاذها لتعزيز بناء مجتمعات شاملة واقتصادات مفتوحة وتمكين الأفراد لدفع مستويات أعلى من الازدهار.",
),
style: const TextStyle(fontSize: 14),
const Text(
'The Legatum Prosperity Index is published annually by the Legatum Institute. It is a policy-focused report that measures the current state of prosperity since 2007. Using the Prosperity Index framework, nations around the world can assess their strengths and weaknesses in order to determine the economic and strategic choices that need to be made to further build inclusive societies, open economies, and empowered people to drive greater levels of prosperity.',
style: TextStyle(fontSize: 13),
),
const SizedBox(height: 24),
// Ranking Section (Using LeaderCard-like styling)
Wrap(
spacing: 16,
runSpacing: 16,
alignment: WrapAlignment.center,
// Ranking section
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_RankingCard(
title: context.translate('Rank in 2023', 'الترتيب في 2023'),
value: "44",
icon: const Icon(Icons.arrow_downward, color: Colors.red, size: 16),
title: 'Rank in 2023',
value: '44',
icon: const Icon(Icons.arrow_downward, color: Colors.red, size: 25,weight: 50),
),
_RankingCard(
title: context.translate('vs. Previous Edition', 'مقارنة بالإصدار السابق'),
value: "41",
icon: const SizedBox.shrink(), // No icon for this
title: 'vs. Previous Edition',
value: '41',
icon: const SizedBox.shrink(),
),
],
),
const SizedBox(height: 24),
// Country Rankings Section (Using CategoryButton-like styling)
// Wrap(
// spacing: 16,
// runSpacing: 16,
// alignment: WrapAlignment.center,
// children: [
// _CountryRankingButton(
// title: context.translate('First Globally: DENMARK', 'الأول عالميًا: الدنمارك'),
// imagePath: 'assets/flags/denmark.png',
// color: const Color(0xFFD7C1AF),
// ),
// _CountryRankingButton(
// title: context.translate('First in GCC: MULTIPLE COUNTRIES', 'الأول في دول الخليج: دول متعددة'),
// imagePath: null, // No specific flag
// color: const Color(0xFFAEC6CF),
// ),
// _CountryRankingButton(
// title: context.translate('First in Arab Countries: UAE', 'الأول في الدول العربية: الإمارات'),
// imagePath: 'assets/flags/uae.png',
// color: const Color(0xFFD7AFAF),
// ),
// ],
// ),
// Country ranking section
_CountryRankingItem(
title: 'First Globally',
country: 'DENMARK',
flagPath: 'assets/country_flags/de.png',
),
const Divider(),
_CountryRankingItem(
title: 'First in Oman',
country: 'Oman',
flagPath: 'assets/country_flags/fk.png',
),
const Divider(),
_CountryRankingItem(
title: 'First in Arab Countries',
country: 'UNITED ARAB EMIRATES',
flagPath: 'assets/country_flags/ga.png',
),
],
),
),
);
}
}
// Ranking Card (similar to _LeaderCard)
class _RankingCard extends StatelessWidget {
final String title;
final String value;
final Widget icon;
const _RankingCard({
Key? key,
required this.title,
required this.value,
required this.icon,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return SizedBox(
width: 160,
child: Container(
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: Colors.grey[100],
borderRadius: BorderRadius.circular(12),
),
child: Column(
children: [
Text(
title,
textAlign: TextAlign.center,
style: const TextStyle(
fontSize: 13,
color: Colors.black54,
),
),
const SizedBox(height: 4),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
value,
textAlign: TextAlign.center,
style: const TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
),
),
const SizedBox(width: 4),
icon,
],
),
],
),
),
);
}
}
// Country Ranking Button (similar to _CategoryButton)
class _CountryRankingButton extends StatelessWidget {
final String title;
final String? imagePath;
final Color color;
const _CountryRankingButton({
Key? key,
required this.title,
required this.imagePath,
required this.color,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
return Container(
margin: const EdgeInsets.symmetric(vertical: 6),
width: 160,
height: 70,
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: color,
borderRadius: BorderRadius.circular(16),
color: Colors.grey[100],
borderRadius: BorderRadius.circular(12),
),
alignment: Alignment.center,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
child: Column(
children: [
if (imagePath != null) ...[
Image.asset(
imagePath!,
width: 24,
height: 24,
),
const SizedBox(width: 8),
],
Flexible(
child: Text(
title,
style: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 14,
Text(
title,
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 13, color: Colors.black54),
),
const SizedBox(height: 4),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
value,
style: const TextStyle(
fontSize: 36,
fontWeight: FontWeight.bold,
),
),
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,
const SizedBox(width: 6),
icon,
],
),
],
),
);
}
}
class _CountryRankingItem extends StatelessWidget {
final String title;
final String country;
final String flagPath;
const _CountryRankingItem({
required this.title,
required this.country,
required this.flagPath,
});
@override
Widget build(BuildContext context) {
return Container(
color: Colors.grey[100],
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 8),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: const TextStyle(fontSize: 14, color: Colors.black54),
),
const SizedBox(height: 4),
Text(
country,
style: const TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
],
),
),
const SizedBox(width: 16),
ClipOval(
child: Container(
width: 50,
height: 50,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.transparent,
),
child: Image.asset(flagPath, width: 50, height: 50, fit: BoxFit.cover),
),
),
],