merge
This commit is contained in:
commit
ebf5b5e853
@ -0,0 +1,28 @@
|
|||||||
|
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
|
||||||
|
_
|
||||||
|
]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<18> ‡·•šì2S
|
||||||
|
Q
|
||||||
|
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\
|
||||||
|
Z
|
||||||
|
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
|
||||||
|
_
|
||||||
|
]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
|
||||||
|
Ç “·•šì2Z
|
||||||
|
X
|
||||||
|
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
|
||||||
|
U
|
||||||
|
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt àìœýó2
§ ÑÜÐßÓ2
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
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 å‹<C3A5>ýó2 Ú––šì2c
|
||||||
|
a
|
||||||
|
_C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\android_gradle_build.json æ‹<C3A6>ýó2À ì––šì2h
|
||||||
|
f
|
||||||
|
dC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\android_gradle_build_mini.json æ‹<C3A6>ýó2“ õ—–šì2U
|
||||||
|
S
|
||||||
|
QC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\build.ninja æ‹<C3A6>ýó2†Ü î“–šì2Y
|
||||||
|
W
|
||||||
|
UC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\build.ninja.txt æ‹<C3A6>ýó2^
|
||||||
|
\
|
||||||
|
ZC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\build_file_index.txt æ‹<C3A6>ýó2
S î™–šì2_
|
||||||
|
]
|
||||||
|
[C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\compile_commands.json æ‹<C3A6>ýó2c
|
||||||
|
a
|
||||||
|
_C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\compile_commands.json.bin æ‹<C3A6>ýó2 i
|
||||||
|
g
|
||||||
|
eC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\metadata_generation_command.txt æ‹<C3A6>ýó2
|
||||||
|
Ñ ×˜–šì2\
|
||||||
|
Z
|
||||||
|
XC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\prefab_config.json æ‹<C3A6>ýó2
( ù˜–šì2a
|
||||||
|
_
|
||||||
|
]C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\armeabi-v7a\symbol_folder_index.txt æ‹<C3A6>ýó2
T ¾™–šì2W
|
||||||
|
U
|
||||||
|
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt æ‹<C3A6>ýó2
§ ÑÜÐßÓ2
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
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 þ–<C3BE>ýó2 ßï–šì2[
|
||||||
|
Y
|
||||||
|
WC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\android_gradle_build.json <08>—<EFBFBD>ýó2° åï–šì2`
|
||||||
|
^
|
||||||
|
\C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\android_gradle_build_mini.json <08>—<EFBFBD>ýó2ƒ ðï–šì2M
|
||||||
|
K
|
||||||
|
IC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\build.ninja <08>—<EFBFBD>ýó2ÞÛ ‚î–šì2Q
|
||||||
|
O
|
||||||
|
MC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\build.ninja.txt <08>—<EFBFBD>ýó2V
|
||||||
|
T
|
||||||
|
RC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\build_file_index.txt <08>—<EFBFBD>ýó2
S þï–šì2W
|
||||||
|
U
|
||||||
|
SC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\compile_commands.json <08>—<EFBFBD>ýó2[
|
||||||
|
Y
|
||||||
|
WC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\compile_commands.json.bin <08>—<EFBFBD>ýó2 a
|
||||||
|
_
|
||||||
|
]C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\metadata_generation_command.txt <08>—<EFBFBD>ýó2
|
||||||
|
© ôï–šì2T
|
||||||
|
R
|
||||||
|
PC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\prefab_config.json ‚—<E2809A>ýó2
( úï–šì2Y
|
||||||
|
W
|
||||||
|
UC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86\symbol_folder_index.txt ‚—<E2809A>ýó2
L ýï–šì2W
|
||||||
|
U
|
||||||
|
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt ‚—<E2809A>ýó2
§ ÑÜÐßÓ2
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
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 É—<C389>ýó2 Œ„—šì2^
|
||||||
|
\
|
||||||
|
ZC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\android_gradle_build.json É—<C389>ýó2¶ “„—šì2c
|
||||||
|
a
|
||||||
|
_C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\android_gradle_build_mini.json É—<C389>ýó2‰ ›„—šì2P
|
||||||
|
N
|
||||||
|
LC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\build.ninja É—<C389>ýó2íÛ ç‚—šì2T
|
||||||
|
R
|
||||||
|
PC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\build.ninja.txt Ê—<C38A>ýó2Y
|
||||||
|
W
|
||||||
|
UC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\build_file_index.txt Ê—<C38A>ýó2
S ž„—šì2Z
|
||||||
|
X
|
||||||
|
VC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\compile_commands.json Ê—<C38A>ýó2^
|
||||||
|
\
|
||||||
|
ZC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\compile_commands.json.bin Ê—<C38A>ýó2 d
|
||||||
|
b
|
||||||
|
`C:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\metadata_generation_command.txt Ê—<C38A>ýó2
|
||||||
|
¸ œ„—šì2W
|
||||||
|
U
|
||||||
|
SC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\prefab_config.json Ê—<C38A>ýó2
( <20>„—šì2\
|
||||||
|
Z
|
||||||
|
XC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\symbol_folder_index.txt Ê—<C38A>ýó2
O <20>„—šì2W
|
||||||
|
U
|
||||||
|
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt Ê—<C38A>ýó2
§ ÑÜÐßÓ2
|
||||||
BIN
assets/competitiveness/solo.png
Normal file
BIN
assets/competitiveness/solo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.9 KiB |
BIN
assets/competitiveness/soloo.png
Normal file
BIN
assets/competitiveness/soloo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
@ -1,216 +1,216 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:uae_stat/domain/use_cases/language.dart';
|
import 'package:uae_stat/domain/use_cases/language.dart';
|
||||||
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
|
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
|
||||||
|
|
||||||
class ReportDetailPage extends StatelessWidget {
|
class ReportDetailPage extends StatelessWidget {
|
||||||
final Map<String, dynamic> report;
|
final Map<String, dynamic> report;
|
||||||
|
|
||||||
const ReportDetailPage({super.key, required this.report});
|
const ReportDetailPage({super.key, required this.report});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
double width = MediaQuery.of(context).size.width;
|
double width = MediaQuery.of(context).size.width;
|
||||||
|
|
||||||
return BaseScaffold(
|
return BaseScaffold(
|
||||||
title: Text(
|
title: Text(
|
||||||
context.translate('UAE Competitiveness', 'القدرة التنافسية للإمارات'), // Add localization
|
context.translate('UAE Competitiveness', 'القدرة التنافسية للإمارات'), // Add localization
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate('Roboto', 'NotoKufi'),
|
fontFamily: context.translate('Roboto', 'NotoKufi'),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
// hasDrawer: false,
|
// hasDrawer: false,
|
||||||
showBackButton: true,
|
showBackButton: true,
|
||||||
body: SingleChildScrollView(
|
body: SingleChildScrollView(
|
||||||
padding: const EdgeInsets.all(16.0),
|
padding: const EdgeInsets.all(16.0),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
// Header Section: Report Title and Image
|
// Header Section: Report Title and Image
|
||||||
Center(
|
Center(
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'assets/competitiveness/solo.png',
|
'assets/competitiveness/solo.png',
|
||||||
height: 80, // Increase size for prominence
|
height: 80, // Increase size for prominence
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Text(
|
Text(
|
||||||
context.translate('Prosperity Index (2023)', 'مؤشر الازدهار (2023)'),
|
context.translate('Prosperity Index (2023)', 'مؤشر الازدهار (2023)'),
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 22,
|
fontSize: 22,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
|
|
||||||
// Description Section
|
// Description Section
|
||||||
Text(
|
Text(
|
||||||
context.translate(
|
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.",
|
"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. باستخدام إطار مؤشر الازدهار، يمكن للدول حول العالم تقييم نقاط قوتها وضعفها لتحديد الخيارات الاقتصادية والاستراتيجية التي يجب اتخاذها لتعزيز بناء مجتمعات شاملة واقتصادات مفتوحة وتمكين الأفراد لدفع مستويات أعلى من الازدهار.",
|
"يُنشر مؤشر الازدهار الليجاتوم سنويًا من قبل معهد ليجاتوم. إنه تقرير يركز على السياسات ويقيس الحالة الحالية للازدهار منذ عام 2007. باستخدام إطار مؤشر الازدهار، يمكن للدول حول العالم تقييم نقاط قوتها وضعفها لتحديد الخيارات الاقتصادية والاستراتيجية التي يجب اتخاذها لتعزيز بناء مجتمعات شاملة واقتصادات مفتوحة وتمكين الأفراد لدفع مستويات أعلى من الازدهار.",
|
||||||
),
|
),
|
||||||
style: const TextStyle(fontSize: 14),
|
style: const TextStyle(fontSize: 14),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
|
|
||||||
// Ranking Section (Using LeaderCard-like styling)
|
// Ranking Section (Using LeaderCard-like styling)
|
||||||
Wrap(
|
Wrap(
|
||||||
spacing: 16,
|
spacing: 16,
|
||||||
runSpacing: 16,
|
runSpacing: 16,
|
||||||
alignment: WrapAlignment.center,
|
alignment: WrapAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
_RankingCard(
|
_RankingCard(
|
||||||
title: context.translate('Rank in 2023', 'الترتيب في 2023'),
|
title: context.translate('Rank in 2023', 'الترتيب في 2023'),
|
||||||
value: "44",
|
value: "44",
|
||||||
icon: const Icon(Icons.arrow_downward, color: Colors.red, size: 16),
|
icon: const Icon(Icons.arrow_downward, color: Colors.red, size: 16),
|
||||||
),
|
),
|
||||||
_RankingCard(
|
_RankingCard(
|
||||||
title: context.translate('vs. Previous Edition', 'مقارنة بالإصدار السابق'),
|
title: context.translate('vs. Previous Edition', 'مقارنة بالإصدار السابق'),
|
||||||
value: "41",
|
value: "41",
|
||||||
icon: const SizedBox.shrink(), // No icon for this
|
icon: const SizedBox.shrink(), // No icon for this
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
|
|
||||||
// Country Rankings Section (Using CategoryButton-like styling)
|
// Country Rankings Section (Using CategoryButton-like styling)
|
||||||
// Wrap(
|
// Wrap(
|
||||||
// spacing: 16,
|
// spacing: 16,
|
||||||
// runSpacing: 16,
|
// runSpacing: 16,
|
||||||
// alignment: WrapAlignment.center,
|
// alignment: WrapAlignment.center,
|
||||||
// children: [
|
// children: [
|
||||||
// _CountryRankingButton(
|
// _CountryRankingButton(
|
||||||
// title: context.translate('First Globally: DENMARK', 'الأول عالميًا: الدنمارك'),
|
// title: context.translate('First Globally: DENMARK', 'الأول عالميًا: الدنمارك'),
|
||||||
// imagePath: 'assets/flags/denmark.png',
|
// imagePath: 'assets/flags/denmark.png',
|
||||||
// color: const Color(0xFFD7C1AF),
|
// color: const Color(0xFFD7C1AF),
|
||||||
// ),
|
// ),
|
||||||
// _CountryRankingButton(
|
// _CountryRankingButton(
|
||||||
// title: context.translate('First in GCC: MULTIPLE COUNTRIES', 'الأول في دول الخليج: دول متعددة'),
|
// title: context.translate('First in GCC: MULTIPLE COUNTRIES', 'الأول في دول الخليج: دول متعددة'),
|
||||||
// imagePath: null, // No specific flag
|
// imagePath: null, // No specific flag
|
||||||
// color: const Color(0xFFAEC6CF),
|
// color: const Color(0xFFAEC6CF),
|
||||||
// ),
|
// ),
|
||||||
// _CountryRankingButton(
|
// _CountryRankingButton(
|
||||||
// title: context.translate('First in Arab Countries: UAE', 'الأول في الدول العربية: الإمارات'),
|
// title: context.translate('First in Arab Countries: UAE', 'الأول في الدول العربية: الإمارات'),
|
||||||
// imagePath: 'assets/flags/uae.png',
|
// imagePath: 'assets/flags/uae.png',
|
||||||
// color: const Color(0xFFD7AFAF),
|
// color: const Color(0xFFD7AFAF),
|
||||||
// ),
|
// ),
|
||||||
// ],
|
// ],
|
||||||
// ),
|
// ),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ranking Card (similar to _LeaderCard)
|
// Ranking Card (similar to _LeaderCard)
|
||||||
class _RankingCard extends StatelessWidget {
|
class _RankingCard extends StatelessWidget {
|
||||||
final String title;
|
final String title;
|
||||||
final String value;
|
final String value;
|
||||||
final Widget icon;
|
final Widget icon;
|
||||||
|
|
||||||
const _RankingCard({
|
const _RankingCard({
|
||||||
Key? key,
|
Key? key,
|
||||||
required this.title,
|
required this.title,
|
||||||
required this.value,
|
required this.value,
|
||||||
required this.icon,
|
required this.icon,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
width: 160,
|
width: 160,
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: const EdgeInsets.all(12),
|
padding: const EdgeInsets.all(12),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Colors.grey[100],
|
color: Colors.grey[100],
|
||||||
borderRadius: BorderRadius.circular(12),
|
borderRadius: BorderRadius.circular(12),
|
||||||
),
|
),
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
title,
|
title,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 13,
|
fontSize: 13,
|
||||||
color: Colors.black54,
|
color: Colors.black54,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 4),
|
const SizedBox(height: 4),
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
value,
|
value,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 24,
|
fontSize: 24,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
icon,
|
icon,
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Country Ranking Button (similar to _CategoryButton)
|
// Country Ranking Button (similar to _CategoryButton)
|
||||||
class _CountryRankingButton extends StatelessWidget {
|
class _CountryRankingButton extends StatelessWidget {
|
||||||
final String title;
|
final String title;
|
||||||
final String? imagePath;
|
final String? imagePath;
|
||||||
final Color color;
|
final Color color;
|
||||||
|
|
||||||
const _CountryRankingButton({
|
const _CountryRankingButton({
|
||||||
Key? key,
|
Key? key,
|
||||||
required this.title,
|
required this.title,
|
||||||
required this.imagePath,
|
required this.imagePath,
|
||||||
required this.color,
|
required this.color,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
width: 160,
|
width: 160,
|
||||||
height: 70,
|
height: 70,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: color,
|
color: color,
|
||||||
borderRadius: BorderRadius.circular(16),
|
borderRadius: BorderRadius.circular(16),
|
||||||
),
|
),
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
if (imagePath != null) ...[
|
if (imagePath != null) ...[
|
||||||
Image.asset(
|
Image.asset(
|
||||||
imagePath!,
|
imagePath!,
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
),
|
),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
],
|
],
|
||||||
Flexible(
|
Flexible(
|
||||||
child: Text(
|
child: Text(
|
||||||
title,
|
title,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
),
|
),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,157 +1,157 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:uae_stat/domain/use_cases/language.dart';
|
import 'package:uae_stat/domain/use_cases/language.dart';
|
||||||
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
|
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
|
||||||
|
|
||||||
class Competitiveness extends StatelessWidget {
|
class Competitiveness extends StatelessWidget {
|
||||||
const Competitiveness({super.key});
|
const Competitiveness({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return PopScope(
|
return PopScope(
|
||||||
canPop: false,
|
canPop: false,
|
||||||
onPopInvokedWithResult: (didPop, result) {
|
onPopInvokedWithResult: (didPop, result) {
|
||||||
if (didPop) return;
|
if (didPop) return;
|
||||||
context.go('/myhomepage');
|
context.go('/myhomepage');
|
||||||
},
|
},
|
||||||
child: BaseScaffold(
|
child: BaseScaffold(
|
||||||
title: Text(
|
title: Text(
|
||||||
context.translate(
|
context.translate(
|
||||||
'UAE Competitiveness',
|
'UAE Competitiveness',
|
||||||
'تنافسية دولة الإمارات العربية المتحدة',
|
'تنافسية دولة الإمارات العربية المتحدة',
|
||||||
),
|
),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
body: CompetitivenessState(context),
|
body: CompetitivenessState(context),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget CompetitivenessState(BuildContext context) {
|
Widget CompetitivenessState(BuildContext context) {
|
||||||
final List<Map<String, dynamic>> reports = [
|
final List<Map<String, dynamic>> reports = [
|
||||||
{
|
{
|
||||||
'rank': 44,
|
'rank': 44,
|
||||||
'title': 'Prosperity Index (2023)',
|
'title': 'Prosperity Index (2023)',
|
||||||
'logo': 'assets/competitiveness/solo.png',
|
'logo': 'assets/competitiveness/solo.png',
|
||||||
'borderColor': Colors.blue,
|
'borderColor': Colors.blue,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'rank': 26,
|
'rank': 26,
|
||||||
'title': 'World Happiness Report (2023)',
|
'title': 'World Happiness Report (2023)',
|
||||||
'logo': 'assets/competitiveness/soloo.png',
|
'logo': 'assets/competitiveness/soloo.png',
|
||||||
'borderColor': Color(0xFF844F36),
|
'borderColor': Color(0xFF844F36),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'rank': 7,
|
'rank': 7,
|
||||||
'title': 'Logistics Performance Index (2023)',
|
'title': 'Logistics Performance Index (2023)',
|
||||||
'logo': 'assets/competitiveness/solo.png',
|
'logo': 'assets/competitiveness/solo.png',
|
||||||
'borderColor': Colors.blue,
|
'borderColor': Colors.blue,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'rank': 10,
|
'rank': 10,
|
||||||
'title': 'Global Soft Power Index (2023)',
|
'title': 'Global Soft Power Index (2023)',
|
||||||
'logo': 'assets/competitiveness/soloo.png',
|
'logo': 'assets/competitiveness/soloo.png',
|
||||||
'borderColor': Colors.blue,
|
'borderColor': Colors.blue,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'rank': 76,
|
'rank': 76,
|
||||||
'title': 'Global Terrorism Index (2023)',
|
'title': 'Global Terrorism Index (2023)',
|
||||||
'logo': 'assets/competitiveness/solo.png',
|
'logo': 'assets/competitiveness/solo.png',
|
||||||
'borderColor': Color(0xFF844F36),
|
'borderColor': Color(0xFF844F36),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'rank': 10,
|
'rank': 10,
|
||||||
'title': 'The World Competitiveness Yearbook (2023)',
|
'title': 'The World Competitiveness Yearbook (2023)',
|
||||||
'logo': 'assets/competitiveness/soloo.png',
|
'logo': 'assets/competitiveness/soloo.png',
|
||||||
'borderColor': Colors.blue,
|
'borderColor': Colors.blue,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'rank': 71,
|
'rank': 71,
|
||||||
'title': 'Global Gender Gap Report (2023)',
|
'title': 'Global Gender Gap Report (2023)',
|
||||||
'logo': 'assets/competitiveness/solo.png',
|
'logo': 'assets/competitiveness/solo.png',
|
||||||
'borderColor': Colors.blue,
|
'borderColor': Colors.blue,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'rank': 29,
|
'rank': 29,
|
||||||
'title': 'Competitive Industrial Performance Index (2023)',
|
'title': 'Competitive Industrial Performance Index (2023)',
|
||||||
'logo': 'assets/competitiveness/soloo.png',
|
'logo': 'assets/competitiveness/soloo.png',
|
||||||
'borderColor': Color(0xFF844F36),
|
'borderColor': Color(0xFF844F36),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
SizedBox(height: 16),
|
SizedBox(height: 16),
|
||||||
Text(
|
Text(
|
||||||
'(22) Competitive Reports',
|
'(22) Competitive Reports',
|
||||||
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600),
|
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600),
|
||||||
),
|
),
|
||||||
SizedBox(height: 12),
|
SizedBox(height: 12),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
itemCount: reports.length,
|
itemCount: reports.length,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
final report = reports[index];
|
final report = reports[index];
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
// Navigate to detail page with arguments
|
// Navigate to detail page with arguments
|
||||||
context.push('/reportDetail', extra: report);
|
context.push('/reportDetail', extra: report);
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
border: Border.all(color: report['borderColor']),
|
border: Border.all(color: report['borderColor']),
|
||||||
borderRadius: BorderRadius.circular(12),
|
borderRadius: BorderRadius.circular(12),
|
||||||
),
|
),
|
||||||
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
|
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
|
||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Column(
|
Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'Rank',
|
'Rank',
|
||||||
style: TextStyle(fontSize: 12, color: Colors.grey[600]),
|
style: TextStyle(fontSize: 12, color: Colors.grey[600]),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
'${report['rank']}',
|
'${report['rank']}',
|
||||||
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
|
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(width: 12),
|
const SizedBox(width: 12),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Text(
|
child: Text(
|
||||||
report['title'],
|
report['title'],
|
||||||
style: const TextStyle(fontSize: 14, fontWeight: FontWeight.w500),
|
style: const TextStyle(fontSize: 14, fontWeight: FontWeight.w500),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
Container(
|
Container(
|
||||||
height: 58,
|
height: 58,
|
||||||
width: 69,
|
width: 69,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
report['logo'],
|
report['logo'],
|
||||||
fit: BoxFit.fitHeight,
|
fit: BoxFit.fitHeight,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -122,6 +122,8 @@ flutter:
|
|||||||
- assets/backgrounds/
|
- assets/backgrounds/
|
||||||
- assets/backgrounds/from_alsaray/
|
- assets/backgrounds/from_alsaray/
|
||||||
- assets/country_flags/
|
- assets/country_flags/
|
||||||
|
- assets/country-profile/
|
||||||
|
- assets/competitiveness/
|
||||||
- assets/cached_responses/informatica/
|
- assets/cached_responses/informatica/
|
||||||
- assets/cached_responses/sharepoint/
|
- assets/cached_responses/sharepoint/
|
||||||
- assets/cached_responses/qlik/
|
- assets/cached_responses/qlik/
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user