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_svg/flutter_svg.dart';
|
||||
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});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
double width = MediaQuery.of(context).size.width;
|
||||
|
||||
return BaseScaffold(
|
||||
title: Text(
|
||||
context.translate('UAE Competitiveness', 'القدرة التنافسية للإمارات'), // Add localization
|
||||
style: TextStyle(
|
||||
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(
|
||||
children: [
|
||||
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,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
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 SizedBox(height: 24),
|
||||
|
||||
// Ranking Section (Using LeaderCard-like styling)
|
||||
Wrap(
|
||||
spacing: 16,
|
||||
runSpacing: 16,
|
||||
alignment: WrapAlignment.center,
|
||||
children: [
|
||||
_RankingCard(
|
||||
title: context.translate('Rank in 2023', 'الترتيب في 2023'),
|
||||
value: "44",
|
||||
icon: const Icon(Icons.arrow_downward, color: Colors.red, size: 16),
|
||||
),
|
||||
_RankingCard(
|
||||
title: context.translate('vs. Previous Edition', 'مقارنة بالإصدار السابق'),
|
||||
value: "41",
|
||||
icon: const SizedBox.shrink(), // No icon for this
|
||||
),
|
||||
],
|
||||
),
|
||||
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),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 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(
|
||||
width: 160,
|
||||
height: 70,
|
||||
decoration: BoxDecoration(
|
||||
color: color,
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
),
|
||||
alignment: Alignment.center,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
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,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
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});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
double width = MediaQuery.of(context).size.width;
|
||||
|
||||
return BaseScaffold(
|
||||
title: Text(
|
||||
context.translate('UAE Competitiveness', 'القدرة التنافسية للإمارات'), // Add localization
|
||||
style: TextStyle(
|
||||
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(
|
||||
children: [
|
||||
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,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
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 SizedBox(height: 24),
|
||||
|
||||
// Ranking Section (Using LeaderCard-like styling)
|
||||
Wrap(
|
||||
spacing: 16,
|
||||
runSpacing: 16,
|
||||
alignment: WrapAlignment.center,
|
||||
children: [
|
||||
_RankingCard(
|
||||
title: context.translate('Rank in 2023', 'الترتيب في 2023'),
|
||||
value: "44",
|
||||
icon: const Icon(Icons.arrow_downward, color: Colors.red, size: 16),
|
||||
),
|
||||
_RankingCard(
|
||||
title: context.translate('vs. Previous Edition', 'مقارنة بالإصدار السابق'),
|
||||
value: "41",
|
||||
icon: const SizedBox.shrink(), // No icon for this
|
||||
),
|
||||
],
|
||||
),
|
||||
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),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 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(
|
||||
width: 160,
|
||||
height: 70,
|
||||
decoration: BoxDecoration(
|
||||
color: color,
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
),
|
||||
alignment: Alignment.center,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
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,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,157 +1,157 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:uae_stat/domain/use_cases/language.dart';
|
||||
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
|
||||
|
||||
class Competitiveness extends StatelessWidget {
|
||||
const Competitiveness({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return PopScope(
|
||||
canPop: false,
|
||||
onPopInvokedWithResult: (didPop, result) {
|
||||
if (didPop) return;
|
||||
context.go('/myhomepage');
|
||||
},
|
||||
child: BaseScaffold(
|
||||
title: Text(
|
||||
context.translate(
|
||||
'UAE Competitiveness',
|
||||
'تنافسية دولة الإمارات العربية المتحدة',
|
||||
),
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)
|
||||
),
|
||||
),
|
||||
body: CompetitivenessState(context),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget CompetitivenessState(BuildContext context) {
|
||||
final List<Map<String, dynamic>> reports = [
|
||||
{
|
||||
'rank': 44,
|
||||
'title': 'Prosperity Index (2023)',
|
||||
'logo': 'assets/competitiveness/solo.png',
|
||||
'borderColor': Colors.blue,
|
||||
},
|
||||
{
|
||||
'rank': 26,
|
||||
'title': 'World Happiness Report (2023)',
|
||||
'logo': 'assets/competitiveness/soloo.png',
|
||||
'borderColor': Color(0xFF844F36),
|
||||
},
|
||||
{
|
||||
'rank': 7,
|
||||
'title': 'Logistics Performance Index (2023)',
|
||||
'logo': 'assets/competitiveness/solo.png',
|
||||
'borderColor': Colors.blue,
|
||||
},
|
||||
{
|
||||
'rank': 10,
|
||||
'title': 'Global Soft Power Index (2023)',
|
||||
'logo': 'assets/competitiveness/soloo.png',
|
||||
'borderColor': Colors.blue,
|
||||
},
|
||||
{
|
||||
'rank': 76,
|
||||
'title': 'Global Terrorism Index (2023)',
|
||||
'logo': 'assets/competitiveness/solo.png',
|
||||
'borderColor': Color(0xFF844F36),
|
||||
},
|
||||
{
|
||||
'rank': 10,
|
||||
'title': 'The World Competitiveness Yearbook (2023)',
|
||||
'logo': 'assets/competitiveness/soloo.png',
|
||||
'borderColor': Colors.blue,
|
||||
},
|
||||
{
|
||||
'rank': 71,
|
||||
'title': 'Global Gender Gap Report (2023)',
|
||||
'logo': 'assets/competitiveness/solo.png',
|
||||
'borderColor': Colors.blue,
|
||||
},
|
||||
{
|
||||
'rank': 29,
|
||||
'title': 'Competitive Industrial Performance Index (2023)',
|
||||
'logo': 'assets/competitiveness/soloo.png',
|
||||
'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: InkWell(
|
||||
onTap: () {
|
||||
// Navigate to detail page with arguments
|
||||
context.push('/reportDetail', extra: report);
|
||||
},
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: report['borderColor']),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
'Rank',
|
||||
style: TextStyle(fontSize: 12, color: Colors.grey[600]),
|
||||
),
|
||||
Text(
|
||||
'${report['rank']}',
|
||||
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(
|
||||
child: Text(
|
||||
report['title'],
|
||||
style: const TextStyle(fontSize: 14, fontWeight: FontWeight.w500),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
Container(
|
||||
height: 58,
|
||||
width: 69,
|
||||
alignment: Alignment.center,
|
||||
child: Image.asset(
|
||||
report['logo'],
|
||||
fit: BoxFit.fitHeight,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:uae_stat/domain/use_cases/language.dart';
|
||||
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
|
||||
|
||||
class Competitiveness extends StatelessWidget {
|
||||
const Competitiveness({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return PopScope(
|
||||
canPop: false,
|
||||
onPopInvokedWithResult: (didPop, result) {
|
||||
if (didPop) return;
|
||||
context.go('/myhomepage');
|
||||
},
|
||||
child: BaseScaffold(
|
||||
title: Text(
|
||||
context.translate(
|
||||
'UAE Competitiveness',
|
||||
'تنافسية دولة الإمارات العربية المتحدة',
|
||||
),
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)
|
||||
),
|
||||
),
|
||||
body: CompetitivenessState(context),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget CompetitivenessState(BuildContext context) {
|
||||
final List<Map<String, dynamic>> reports = [
|
||||
{
|
||||
'rank': 44,
|
||||
'title': 'Prosperity Index (2023)',
|
||||
'logo': 'assets/competitiveness/solo.png',
|
||||
'borderColor': Colors.blue,
|
||||
},
|
||||
{
|
||||
'rank': 26,
|
||||
'title': 'World Happiness Report (2023)',
|
||||
'logo': 'assets/competitiveness/soloo.png',
|
||||
'borderColor': Color(0xFF844F36),
|
||||
},
|
||||
{
|
||||
'rank': 7,
|
||||
'title': 'Logistics Performance Index (2023)',
|
||||
'logo': 'assets/competitiveness/solo.png',
|
||||
'borderColor': Colors.blue,
|
||||
},
|
||||
{
|
||||
'rank': 10,
|
||||
'title': 'Global Soft Power Index (2023)',
|
||||
'logo': 'assets/competitiveness/soloo.png',
|
||||
'borderColor': Colors.blue,
|
||||
},
|
||||
{
|
||||
'rank': 76,
|
||||
'title': 'Global Terrorism Index (2023)',
|
||||
'logo': 'assets/competitiveness/solo.png',
|
||||
'borderColor': Color(0xFF844F36),
|
||||
},
|
||||
{
|
||||
'rank': 10,
|
||||
'title': 'The World Competitiveness Yearbook (2023)',
|
||||
'logo': 'assets/competitiveness/soloo.png',
|
||||
'borderColor': Colors.blue,
|
||||
},
|
||||
{
|
||||
'rank': 71,
|
||||
'title': 'Global Gender Gap Report (2023)',
|
||||
'logo': 'assets/competitiveness/solo.png',
|
||||
'borderColor': Colors.blue,
|
||||
},
|
||||
{
|
||||
'rank': 29,
|
||||
'title': 'Competitive Industrial Performance Index (2023)',
|
||||
'logo': 'assets/competitiveness/soloo.png',
|
||||
'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: InkWell(
|
||||
onTap: () {
|
||||
// Navigate to detail page with arguments
|
||||
context.push('/reportDetail', extra: report);
|
||||
},
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: report['borderColor']),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
'Rank',
|
||||
style: TextStyle(fontSize: 12, color: Colors.grey[600]),
|
||||
),
|
||||
Text(
|
||||
'${report['rank']}',
|
||||
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(
|
||||
child: Text(
|
||||
report['title'],
|
||||
style: const TextStyle(fontSize: 14, fontWeight: FontWeight.w500),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
Container(
|
||||
height: 58,
|
||||
width: 69,
|
||||
alignment: Alignment.center,
|
||||
child: Image.asset(
|
||||
report['logo'],
|
||||
fit: BoxFit.fitHeight,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -122,6 +122,8 @@ flutter:
|
||||
- assets/backgrounds/
|
||||
- assets/backgrounds/from_alsaray/
|
||||
- assets/country_flags/
|
||||
- assets/country-profile/
|
||||
- assets/competitiveness/
|
||||
- assets/cached_responses/informatica/
|
||||
- assets/cached_responses/sharepoint/
|
||||
- assets/cached_responses/qlik/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user