competitiveness

This commit is contained in:
Juki-shiba 2025-06-05 18:10:58 +05:30
parent 8410ab2d5b
commit e994e8e5e0
12 changed files with 800 additions and 284 deletions

View File

@ -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  ø<EFBFBD>™¬ó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  ø<EFBFBD>™¬ó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  ø<EFBFBD>™¬ó2<18> ‡·•šì2S
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  ø<EFBFBD>™¬ó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  ø<EFBFBD>™¬ó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  ø<EFBFBD>™¬ó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  ø<EFBFBD>™¬ó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  ø<EFBFBD>™¬ó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  ø<EFBFBD>™¬ó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  ø<EFBFBD>™¬ó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  ø<EFBFBD>™¬ó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  ø<EFBFBD>™¬ó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 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  å<EFBFBD>ýó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  æ<EFBFBD>ýó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  æ<EFBFBD>ýó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  æ<EFBFBD>ýó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  æ<EFBFBD>ýó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  æ<EFBFBD>ýó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  æ<EFBFBD>ýó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  æ<EFBFBD>ýó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  æ<EFBFBD>ýó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  æ<EFBFBD>ýó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  æ<EFBFBD>ýó2  T ¾™šì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 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  þ<EFBFBD>ýó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  <EFBFBD><EFBFBD>ýó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  <EFBFBD><EFBFBD>ýó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  <EFBFBD><EFBFBD>ýó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  <EFBFBD><EFBFBD>ýó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  <EFBFBD><EFBFBD>ýó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  <EFBFBD><EFBFBD>ýó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  <EFBFBD><EFBFBD>ýó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  <EFBFBD><EFBFBD>ýó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  <EFBFBD>ýó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  <EFBFBD>ýó2  L ýïšì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 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  É—<EFBFBD>ýó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  É—<EFBFBD>ýó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  É—<EFBFBD>ýó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  É—<EFBFBD>ýó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  Ê—<EFBFBD>ýó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  Ê—<EFBFBD>ýó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  Ê—<EFBFBD>ýó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  Ê—<EFBFBD>ýó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  Ê—<EFBFBD>ýó2
¸ œ„—šì2W
U
SC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\prefab_config.json  „’™¬ó2  ( <20>„—šì2\
SC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\prefab_config.json  Ê—<EFBFBD>ýó2  ( <20>„—šì2\
Z
XC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\symbol_folder_index.txt  „’™¬ó2  O <20>„—šì2W
XC:\flutter code\FCSC\FCSC\android\app\.cxx\Debug\m4rj1019\x86_64\symbol_folder_index.txt  Ê—<EFBFBD>ýó2  O <20>„—šì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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -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/Competitiveness/Detailedcompetitiveness.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';
@ -663,6 +664,14 @@ final GoRouter router = GoRouter(
);
},
),
GoRoute(
path: '/reportDetail',
builder: (context, state) {
final report = state.extra as Map<String, dynamic>;
return ReportDetailPage(report: report);
},
),
GoRoute(
path: '/marriages',
builder: (context, state) => Marriages(),

View File

@ -0,0 +1,222 @@
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,
leading: IconButton(
icon: const Icon(
Icons.arrow_back_ios,
color: Colors.black, // Ensure visibility
),
onPressed: () => Navigator.of(context).pop(),
),
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,
),
),
],
),
);
}
}

View File

@ -1,5 +1,6 @@
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 {
@ -14,7 +15,18 @@ class Competitiveness extends StatelessWidget {
context.go('/myhomepage');
},
child: BaseScaffold(
title: Center(child: Text("UAE Competitiveness")),
title: Text(
context.translate(
'UAE Competitiveness',
'تنافسية دولة الإمارات العربية المتحدة',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)
),
),
body: CompetitivenessState(context),
),
);
@ -25,49 +37,49 @@ class Competitiveness extends StatelessWidget {
{
'rank': 44,
'title': 'Prosperity Index (2023)',
'logo': 'assets/backgrounds/share/fcsc.svg',
'logo': 'assets/competitiveness/solo.png',
'borderColor': Colors.blue,
},
{
'rank': 26,
'title': 'World Happiness Report (2023)',
'logo': 'assets/backgrounds/share/fcsc.svg',
'logo': 'assets/competitiveness/soloo.png',
'borderColor': Color(0xFF844F36),
},
{
'rank': 7,
'title': 'Logistics Performance Index (2023)',
'logo': 'assets/backgrounds/share/fcsc.svg',
'logo': 'assets/competitiveness/solo.png',
'borderColor': Colors.blue,
},
{
'rank': 10,
'title': 'Global Soft Power Index (2023)',
'logo': 'assets/backgrounds/share/fcsc.svg',
'logo': 'assets/competitiveness/soloo.png',
'borderColor': Colors.blue,
},
{
'rank': 76,
'title': 'Global Terrorism Index (2023)',
'logo': 'assets/backgrounds/share/fcsc.svg',
'logo': 'assets/competitiveness/solo.png',
'borderColor': Color(0xFF844F36),
},
{
'rank': 10,
'title': 'The World Competitiveness Yearbook (2023)',
'logo': 'assets/backgrounds/share/fcsc.svg',
'logo': 'assets/competitiveness/soloo.png',
'borderColor': Colors.blue,
},
{
'rank': 71,
'title': 'Global Gender Gap Report (2023)',
'logo': 'assets/backgrounds/share/fcsc.svg',
'logo': 'assets/competitiveness/solo.png',
'borderColor': Colors.blue,
},
{
'rank': 29,
'title': 'Competitive Industrial Performance Index (2023)',
'logo': 'assets/backgrounds/share/fcsc.svg',
'logo': 'assets/competitiveness/soloo.png',
'borderColor': Color(0xFF844F36),
},
];
@ -87,42 +99,52 @@ class Competitiveness extends StatelessWidget {
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),
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),
),
],
),
),
SizedBox(width: 4),
Image.asset(
report['logo'],
width: 10,
height: 10,
fit: BoxFit.contain,
),
],
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,
),
),
],
),
),
),
);

View File

@ -21,7 +21,7 @@ class DetailedCountryProfilePage extends StatelessWidget {
return BaseScaffold(
title: const Text('Country Profile'),
hasDrawer: false,
leading: const BackButton(),
showBackButton: true,
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(16.0),
@ -77,31 +77,52 @@ class DetailedCountryProfilePage extends StatelessWidget {
],
),
const SizedBox(height: 24),
Wrap(
spacing: 16,
runSpacing: 16,
alignment: WrapAlignment.center,
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
_CategoryButton(
title: 'Demography',
color: const Color(0xFFD7C1AF),
onTap: () => showCategoryPopup(context, 'Demography'),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Expanded(
child: _CategoryButton(
title: 'Demography',
color: const Color(0xFFD7C1AF),
onTap: () => showCategoryPopup(context, 'Demography'),
),
),
const SizedBox(width: 16),
Expanded(
child: _CategoryButton(
title: 'GDP',
color: const Color(0xFFAEC6CF),
onTap: () => showCategoryPopup(context, 'GDP'),
),
),
],
),
_CategoryButton(
title: 'GDP',
color: const Color(0xFFAEC6CF),
onTap: () => showCategoryPopup(context, 'GDP'),
),
_CategoryButton(
title: 'FDI',
color: const Color(0xFFD7AFAF),
onTap: () => showCategoryPopup(context, 'FDI'),
),
_CategoryButton(
title: 'Trade',
color: const Color(0xFFAFCFAF),
onTap: () => showCategoryPopup(context, 'Trade'),
const SizedBox(height: 16),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Expanded(
child: _CategoryButton(
title: 'FDI',
color: const Color(0xFFD7AFAF),
onTap: () => showCategoryPopup(context, 'FDI'),
),
),
const SizedBox(width: 16),
Expanded(
child: _CategoryButton(
title: 'Trade',
color: const Color(0xFFAFCFAF),
onTap: () => showCategoryPopup(context, 'Trade'),
),
),
],
),
const SizedBox(height: 16),
// Full-width button
_CategoryButton(
title: 'Bilateral Trade',
color: const Color(0xFF9FAFCF),
@ -109,6 +130,8 @@ class DetailedCountryProfilePage extends StatelessWidget {
),
],
)
],
),
),
@ -235,32 +258,31 @@ class _CategoryButton extends StatelessWidget {
final VoidCallback onTap;
const _CategoryButton({
Key? key,
super.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: 178.34,
height: 112.59,
height: 100,
width: double.infinity, // This ensures full width
decoration: BoxDecoration(
color: color,
borderRadius: BorderRadius.circular(20),
borderRadius: BorderRadius.circular(12),
),
alignment: Alignment.center,
child: Text(
title,
style: const TextStyle(
fontSize: 16,
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 16,
),
textAlign: TextAlign.center,
),
),
);
@ -277,6 +299,7 @@ class CategoryPopupContent extends StatelessWidget {
case 'Demography':
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(height: 8),
Container(
@ -288,45 +311,54 @@ class CategoryPopupContent extends StatelessWidget {
),
),
const SizedBox(height: 16),
const Text(
'GDP Overview',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
const SizedBox(height: 16),
_GDPItem(
title: '2021 Nominal GDP (AED)',
value: '1.8 T',
rank: '26',
_DemographyItem(
icon: Icons.location_city,
title: 'Capital City',
value: 'Buenos Aires',
),
Divider(),
_GDPItem(
title: '2021 Real GDP (AED)',
value: '2.08 T',
rank: '22',
_DemographyItem(
icon: Icons.map,
title: 'Surface Area',
value: '2,780,400 sq. km',
),
Divider(),
_GDPItem(
title: '2021 GDP Per Capita (AED)',
value: '39.38 K',
rank: '64',
_DemographyStatItem(
icon: Icons.groups,
title: '2021 Population',
value: '45.81 M',
suffix: '32 ↑ Rank',
suffixStyle: const TextStyle(color: Colors.green, fontSize: 12),
),
Divider(),
const SizedBox(height: 8),
const Text(
'Income Level',
style: TextStyle(color: Colors.grey),
_DemographyStatItem(
icon: Icons.male,
title: '2021 Male Population',
value: '22.35 M',
suffix: '0.98% ↑ Growth Rate',
valueColor: Colors.deepPurple,
),
const SizedBox(height: 4),
const Text(
'Upper Middle Income',
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
Divider(),
_DemographyStatItem(
icon: Icons.female,
title: '2021 Female Population',
value: '23.46 M',
suffix: '0.93% ↑ Growth Rate',
valueColor: Colors.purple,
),
const SizedBox(height: 16),
],
);
case 'GDP':
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(height: 8),
Container(
@ -338,30 +370,40 @@ class CategoryPopupContent extends StatelessWidget {
),
),
const SizedBox(height: 16),
const Text(
'GDP Overview',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
const SizedBox(height: 16),
_GDPItem(
_GDPMetricItem(
icon: Icons.apartment,
title: '2021 Nominal GDP (AED)',
value: '1.8 T',
rank: '26',
rankDirection: '',
rankColor: Colors.red,
),
Divider(),
_GDPItem(
_GDPMetricItem(
icon: Icons.public,
title: '2021 Real GDP (AED)',
value: '2.08 T',
rank: '22',
rankDirection: '',
rankColor: Colors.red,
),
Divider(),
_GDPItem(
_GDPMetricItem(
icon: Icons.groups_3,
title: '2021 GDP Per Capita (AED)',
value: '39.38 K',
rank: '64',
rankDirection: '',
rankColor: Colors.red,
),
Divider(),
const SizedBox(height: 8),
Icon(Icons.stacked_bar_chart, color: Colors.grey),
const SizedBox(height: 4),
const Text(
'Income Level',
style: TextStyle(color: Colors.grey),
@ -377,6 +419,7 @@ class CategoryPopupContent extends StatelessWidget {
case 'FDI':
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(height: 8),
Container(
@ -388,38 +431,31 @@ class CategoryPopupContent extends StatelessWidget {
),
),
const SizedBox(height: 16),
const Text(
'GDP Overview',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
const SizedBox(height: 16),
_GDPItem(
title: '2021 Nominal GDP (AED)',
value: '1.8 T',
rank: '26',
_FDIItem(
icon: Icons.trending_down,
title: '2020 FDI Outflows (AED)',
value: '4.75 B',
growthRate: '-15.94%',
isPositive: false,
),
Divider(),
_GDPItem(
title: '2021 Real GDP (AED)',
value: '2.08 T',
rank: '22',
_FDIItem(
icon: Icons.swap_horizontal_circle_outlined,
title: '2020 FDI Inflows (AED)',
value: '14.75 B',
growthRate: '-39.68%',
isPositive: false,
),
Divider(),
_GDPItem(
title: '2021 GDP Per Capita (AED)',
value: '39.38 K',
rank: '64',
),
Divider(),
const SizedBox(height: 8),
const Text(
'Income Level',
style: TextStyle(color: Colors.grey),
),
const SizedBox(height: 4),
const Text(
'Upper Middle Income',
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
_FDIItem(
icon: Icons.thumb_up_alt_outlined,
title: '2021 FDI Stocks (AED)',
value: '18.98 B',
growthRate: '89.75%',
isPositive: true,
),
const SizedBox(height: 16),
],
@ -427,6 +463,7 @@ class CategoryPopupContent extends StatelessWidget {
case 'Trade':
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(height: 8),
Container(
@ -438,38 +475,31 @@ class CategoryPopupContent extends StatelessWidget {
),
),
const SizedBox(height: 16),
const Text(
'GDP Overview',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
const SizedBox(height: 16),
_GDPItem(
title: '2021 Nominal GDP (AED)',
value: '1.8 T',
rank: '26',
_TradeItem(
icon: Icons.cached,
title: '2021 Total Trade (AED)',
value: '603 B',
growthRate: '39.89%',
isPositive: true,
),
Divider(),
_GDPItem(
title: '2021 Real GDP (AED)',
value: '2.08 T',
rank: '22',
_TradeItem(
icon: Icons.download_outlined,
title: '2021 Imports (AED)',
value: '272.9 B',
growthRate: '40.79%',
isPositive: true,
),
Divider(),
_GDPItem(
title: '2021 GDP Per Capita (AED)',
value: '39.38 K',
rank: '64',
),
Divider(),
const SizedBox(height: 8),
const Text(
'Income Level',
style: TextStyle(color: Colors.grey),
),
const SizedBox(height: 4),
const Text(
'Upper Middle Income',
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
_TradeItem(
icon: Icons.upload_outlined,
title: '2021 Exports (AED)',
value: '330.1 B',
growthRate: '39.15%',
isPositive: true,
),
const SizedBox(height: 16),
],
@ -477,50 +507,56 @@ class CategoryPopupContent extends StatelessWidget {
case 'Bilateral Trade':
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 8),
Container(
width: 50,
height: 5,
decoration: BoxDecoration(
color: Colors.grey[300],
borderRadius: BorderRadius.circular(10),
Center(
child: Container(
width: 50,
height: 5,
decoration: BoxDecoration(
color: Colors.grey[300],
borderRadius: BorderRadius.circular(10),
),
),
),
const SizedBox(height: 16),
const Text(
'GDP Overview',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
const Center(
child: Text(
'UAE Bilateral Trade (2022)',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
),
const SizedBox(height: 8),
const Center(
child: Text(
'Total \$472.5M',
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
),
),
const SizedBox(height: 16),
_GDPItem(
title: '2021 Nominal GDP (AED)',
value: '1.8 T',
rank: '26',
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: const [
_BilateralTradeValueBox(label: 'Total Import', value: '\$390.2M', color: Color(0xFF00B292)),
_BilateralTradeValueBox(label: 'Total Export', value: '\$42.2M', color: Color(0xFFDE4D86)),
_BilateralTradeValueBox(label: 'Total ReExport', value: '\$40.2M', color: Color(0xFF4D52A1)),
],
),
Divider(),
_GDPItem(
title: '2021 Real GDP (AED)',
value: '2.08 T',
rank: '22',
),
Divider(),
_GDPItem(
title: '2021 GDP Per Capita (AED)',
value: '39.38 K',
rank: '64',
),
Divider(),
const SizedBox(height: 8),
const Text(
'Income Level',
style: TextStyle(color: Colors.grey),
),
const SizedBox(height: 4),
const Text(
'Upper Middle Income',
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
const SizedBox(height: 24),
const Center(
child: Text(
'Top 5 Import Commodities',
style: TextStyle(
fontSize: 16, fontWeight: FontWeight.bold, color: Color(0xFF4FBFA8)),
),
),
const SizedBox(height: 12),
_CommodityRow(icon: Icons.eco, label: 'Vegetable Products', value: '\$198.6M'),
_CommodityRow(icon: Icons.liquor, label: 'Foodstuffs, Beverages, Spirits And Tobacco', value: '\$89.9M'),
_CommodityRow(icon: Icons.build, label: 'Base Metals And Articles Of Base Metal', value: '\$65.6M'),
_CommodityRow(icon: Icons.pets, label: 'Live Animals And Their Products', value: '\$23.7M'),
_CommodityRow(icon: Icons.science, label: 'Products Of The Chemical or Allied Industries', value: '\$4.7M'),
const SizedBox(height: 16),
],
);
@ -531,14 +567,239 @@ class CategoryPopupContent extends StatelessWidget {
}
}
}
Widget _DemographyItem({
required IconData icon,
required String title,
required String value,
}) {
return Column(
children: [
Icon(icon, size: 32, color: Colors.grey),
const SizedBox(height: 4),
Text(title, style: const TextStyle(color: Colors.grey)),
const SizedBox(height: 4),
Text(
value,
style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
textAlign: TextAlign.center,
),
],
);
}
Widget _DemographyStatItem({
required IconData icon,
required String title,
required String value,
String? suffix,
TextStyle? suffixStyle,
Color? valueColor,
}) {
return Column(
children: [
Icon(icon, size: 32, color: Colors.grey),
const SizedBox(height: 4),
Text(title, style: const TextStyle(color: Colors.grey)),
const SizedBox(height: 4),
RichText(
textAlign: TextAlign.center,
text: TextSpan(
children: [
TextSpan(
text: '$value ',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 16,
color: valueColor ?? Colors.black,
),
),
if (suffix != null)
TextSpan(
text: suffix,
style: suffixStyle ??
const TextStyle(fontSize: 12, color: Colors.green),
),
],
),
),
],
);
}
Widget _GDPMetricItem({
required IconData icon,
required String title,
required String value,
required String rank,
required String rankDirection,
required Color rankColor,
}) {
return Column(
children: [
Icon(icon, size: 32, color: Colors.grey),
const SizedBox(height: 4),
Text(title, style: const TextStyle(color: Colors.grey)),
const SizedBox(height: 4),
RichText(
textAlign: TextAlign.center,
text: TextSpan(
children: [
TextSpan(
text: '$value ',
style: const TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
color: Colors.black,
),
),
TextSpan(
text: '$rank $rankDirection\n',
style: TextStyle(
fontSize: 12,
color: rankColor,
),
),
const TextSpan(
text: 'Rank',
style: TextStyle(fontSize: 10, color: Colors.grey),
),
],
),
),
],
);
}
Widget _FDIItem({
required IconData icon,
required String title,
required String value,
required String growthRate,
required bool isPositive,
}) {
return Column(
children: [
Icon(icon, size: 32, color: Colors.grey),
const SizedBox(height: 4),
Text(title, style: const TextStyle(color: Colors.grey)),
const SizedBox(height: 4),
Text(
value,
style: const TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
color: Colors.black,
),
),
const SizedBox(height: 2),
Text(
'$growthRate Growth Rate',
style: TextStyle(
color: isPositive ? Colors.green : Colors.red,
fontSize: 12,
),
),
],
);
}
Widget _TradeItem({
required IconData icon,
required String title,
required String value,
required String growthRate,
required bool isPositive,
}) {
return Column(
children: [
Icon(icon, size: 32, color: Colors.grey),
const SizedBox(height: 4),
Text(title, style: const TextStyle(color: Colors.grey)),
const SizedBox(height: 4),
Text(
value,
style: const TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
color: Colors.black,
),
),
const SizedBox(height: 2),
Text(
'$growthRate Growth Rate',
style: TextStyle(
color: isPositive ? Colors.green : Colors.red,
fontSize: 12,
),
),
],
);
}
class _BilateralTradeValueBox extends StatelessWidget {
final String label;
final String value;
final Color color;
const _BilateralTradeValueBox({
required this.label,
required this.value,
required this.color,
});
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
decoration: BoxDecoration(
color: color.withOpacity(0.1),
borderRadius: BorderRadius.circular(10),
border: Border.all(color: color),
),
child: Column(
children: [
Text(
label,
style: TextStyle(fontSize: 12, color: color),
),
const SizedBox(height: 4),
Text(
value,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 14,
color: color,
),
),
],
),
);
}
}
Widget _CommodityRow({
required IconData icon,
required String label,
required String value,
}) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 12),
child: Row(
children: [
Icon(icon, size: 20, color: Colors.grey[600]),
const SizedBox(width: 12),
Expanded(
child: Text(label, style: const TextStyle(fontSize: 14)),
),
Text(value, style: const TextStyle(fontWeight: FontWeight.bold, color: Colors.teal)),
],
),
);
}
//pop-up
void showCategoryPopup(BuildContext context, String category) {
showDialog(
context: context,
barrierColor: Colors.black.withOpacity(0.3), // semi-transparent background
barrierColor: Colors.black.withOpacity(0.3),
builder: (context) => BackdropFilter(
filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), // blur effect
filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5),
child: Dialog(
backgroundColor: Colors.white,
insetPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 40),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
@ -552,3 +813,4 @@ void showCategoryPopup(BuildContext context, String category) {
);
}

View File

@ -109,18 +109,18 @@ packages:
dependency: transitive
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
url: "https://pub.dev"
source: hosted
version: "2.11.0"
version: "2.12.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "2.1.2"
boxy:
dependency: "direct main"
description:
@ -197,10 +197,10 @@ packages:
dependency: transitive
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.0"
checked_yaml:
dependency: transitive
description:
@ -229,10 +229,10 @@ packages:
dependency: transitive
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.1.2"
code_builder:
dependency: transitive
description:
@ -245,10 +245,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
source: hosted
version: "1.19.0"
version: "1.19.1"
community_charts_common:
dependency: transitive
description:
@ -460,10 +460,10 @@ packages:
dependency: transitive
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
version: "1.3.2"
fast_immutable_collections:
dependency: "direct main"
description:
@ -1008,18 +1008,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
url: "https://pub.dev"
source: hosted
version: "10.0.7"
version: "10.0.8"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
url: "https://pub.dev"
source: hosted
version: "3.0.8"
version: "3.0.9"
leak_tracker_testing:
dependency: transitive
description:
@ -1064,10 +1064,10 @@ packages:
dependency: transitive
description:
name: matcher
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
url: "https://pub.dev"
source: hosted
version: "0.12.16+1"
version: "0.12.17"
material_charts:
dependency: "direct main"
description:
@ -1088,10 +1088,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
url: "https://pub.dev"
source: hosted
version: "1.15.0"
version: "1.16.0"
mime:
dependency: transitive
description:
@ -1144,10 +1144,10 @@ packages:
dependency: transitive
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.9.1"
path_parsing:
dependency: transitive
description:
@ -1467,10 +1467,10 @@ packages:
dependency: transitive
description:
name: source_span
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.10.1"
sprintf:
dependency: transitive
description:
@ -1483,10 +1483,10 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.12.1"
state_notifier:
dependency: transitive
description:
@ -1499,10 +1499,10 @@ packages:
dependency: transitive
description:
name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.4"
stream_transform:
dependency: transitive
description:
@ -1515,26 +1515,26 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.1"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "1.2.2"
test_api:
dependency: transitive
description:
name: test_api
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
url: "https://pub.dev"
source: hosted
version: "0.7.3"
version: "0.7.4"
the_validator:
dependency: "direct main"
description:
@ -1723,10 +1723,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
url: "https://pub.dev"
source: hosted
version: "14.3.0"
version: "14.3.1"
watcher:
dependency: transitive
description:

View File

@ -123,6 +123,7 @@ flutter:
- assets/backgrounds/from_alsaray/
- assets/country_flags/
- assets/country-profile/
- assets/competitiveness/
- assets/cached_responses/informatica/
- assets/cached_responses/sharepoint/
- assets/cached_responses/qlik/