CountryProfile PopUp icons and Dotted line added

This commit is contained in:
Kalonkarthik 2025-06-24 18:17:05 +05:30
parent bd9302ab26
commit 988ba186fc
23 changed files with 224 additions and 185 deletions

View File

@ -2,27 +2,27 @@ C/C++ Structured Logo
m m
kC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\additional_project_files.txtC kC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  踌èø2  äýŸÞø2l ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¥“¡<EFBFBD>ú2  äýŸÞø2l
j j
hC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\android_gradle_build.json  踌èø2É ŠþŸÞø2q hC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\android_gradle_build.json  ¥“¡<EFBFBD>ú2É ŠþŸÞø2q
o o
mC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\android_gradle_build_mini.json  踌èø2œ ·þŸÞø2^ mC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\android_gradle_build_mini.json  ¥“¡<EFBFBD>ú2œ ·þŸÞø2^
\ \
ZC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\build.ninja  踌èø2›Ü çúŸÞø2b ZC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\build.ninja  ¥“¡<EFBFBD>ú2›Ü çúŸÞø2b
` `
^C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\build.ninja.txt  踌èø2g ^C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\build.ninja.txt  ¥“¡<EFBFBD>ú2g
e e
cC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\build_file_index.txt  踌èø2 K ÜþŸÞø2h cC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\build_file_index.txt  ¥“¡<EFBFBD>ú2 K ÜþŸÞø2h
f f
dC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\compile_commands.json  踌èø2l dC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\compile_commands.json  ¥“¡<EFBFBD>ú2l
j j
hC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\compile_commands.json.bin  踌èø2 r hC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\compile_commands.json.bin  ¥“¡<EFBFBD>ú2 r
p p
nC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\metadata_generation_command.txt  踌èø2 nC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\metadata_generation_command.txt  ¥“¡<EFBFBD>ú2
à ÔþŸÞø2e à ÔþŸÞø2e
c c
aC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\prefab_config.json  踌èø2  ( ÙþŸÞø2j aC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\prefab_config.json  ¥“¡<EFBFBD>ú2  ( ÙþŸÞø2j
h h
fC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\symbol_folder_index.txt  踌èø2  ] ÙþŸÞø2O fC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\arm64-v8a\symbol_folder_index.txt  ¥“¡<EFBFBD>ú2  ] ÙþŸÞø2O
M M
KC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  踌èø2 § œ¬ùšõ2 KC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ¥“¡<EFBFBD>ú2 § œ¬ùšõ2

View File

@ -2,27 +2,27 @@ C/C++ Structured Logq
o o
mC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\additional_project_files.txtC mC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  “¹Œèø2  åÇ Þø2n ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  á“¡<EFBFBD>ú2  åÇ Þø2n
l l
jC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\android_gradle_build.json  “¹Œèø2Í ïÇ Þø2s jC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\android_gradle_build.json  á“¡<EFBFBD>ú2Í ïÇ Þø2s
q q
oC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\android_gradle_build_mini.json  “¹Œèø2  óÇ Þø2` oC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\android_gradle_build_mini.json  á“¡<EFBFBD>ú2  óÇ Þø2`
^ ^
\C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\build.ninja  “¹Œèø2¥Ü ÃÅ Þø2d \C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\build.ninja  á“¡<EFBFBD>ú2¥Ü ÃÅ Þø2d
b b
`C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\build.ninja.txt  “¹Œèø2i `C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\build.ninja.txt  á“¡<EFBFBD>ú2i
g g
eC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\build_file_index.txt  “¹Œèø2 K ýÇ Þø2j eC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\build_file_index.txt  á“¡<EFBFBD>ú2 K ýÇ Þø2j
h h
fC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\compile_commands.json  “¹Œèø2n fC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\compile_commands.json  á“¡<EFBFBD>ú2n
l l
jC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\compile_commands.json.bin  “¹Œèø2 t jC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\compile_commands.json.bin  á“¡<EFBFBD>ú2 t
r r
pC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\metadata_generation_command.txt  “¹Œèø2 pC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\metadata_generation_command.txt  á“¡<EFBFBD>ú2
ê øÇ Þø2g ê øÇ Þø2g
e e
cC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\prefab_config.json  “¹Œèø2  ( ùÇ Þø2l cC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\prefab_config.json  á“¡<EFBFBD>ú2  ( ùÇ Þø2l
j j
hC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\symbol_folder_index.txt  “¹Œèø2  _ ùÇ Þø2O hC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\armeabi-v7a\symbol_folder_index.txt  á“¡<EFBFBD>ú2  _ ùÇ Þø2O
M M
KC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  “¹Œèø2 § œ¬ùšõ2 KC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  á“¡<EFBFBD>ú2 § œ¬ùšõ2

View File

@ -2,27 +2,27 @@ C/C++ Structured Logi
g g
eC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\additional_project_files.txtC eC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¯¹Œèø2  ÿò Þø2f ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ‰”¡<EFBFBD>ú2  ÿò Þø2f
d d
bC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\android_gradle_build.json  °¹Œèø2½ ¤ó Þø2k bC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\android_gradle_build.json  ‰”¡<EFBFBD>ú2½ ¤ó Þø2k
i i
gC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\android_gradle_build_mini.json  °¹Œèø2<18> °ó Þø2X gC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\android_gradle_build_mini.json  ‰”¡<EFBFBD>ú2<18> °ó Þø2X
V V
TC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\build.ninja  °¹Œèø2ýÛ ³ï Þø2\ TC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\build.ninja  ‰”¡<EFBFBD>ú2ýÛ ³ï Þø2\
Z Z
XC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\build.ninja.txt  °¹Œèø2a XC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\build.ninja.txt  ‰”¡<EFBFBD>ú2a
_ _
]C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\build_file_index.txt  °¹Œèø2 K Âó Þø2b ]C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\build_file_index.txt  ‰”¡<EFBFBD>ú2 K Âó Þø2b
` `
^C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\compile_commands.json  °¹Œèø2f ^C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\compile_commands.json  ‰”¡<EFBFBD>ú2f
d d
bC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\compile_commands.json.bin  °¹Œèø2 l bC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\compile_commands.json.bin  ‰”¡<EFBFBD>ú2 l
j j
hC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\metadata_generation_command.txt  °¹Œèø2 hC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\metadata_generation_command.txt  ‰”¡<EFBFBD>ú2
 ´ó Þø2_  ´ó Þø2_
] ]
[C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\prefab_config.json  °¹Œèø2  ( ´ó Þø2d [C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\prefab_config.json  ‰”¡<EFBFBD>ú2  ( ´ó Þø2d
b b
`C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\symbol_folder_index.txt  °¹Œèø2  W ¹ó Þø2O `C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86\symbol_folder_index.txt  ‰”¡<EFBFBD>ú2  W ¹ó Þø2O
M M
KC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  °¹Œèø2 § œ¬ùšõ2 KC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ‰”¡<EFBFBD>ú2 § œ¬ùšõ2

View File

@ -2,27 +2,27 @@ C/C++ Structured Logl
j j
hC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\additional_project_files.txtC hC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ɹŒèø2  ù”¡Þø2i ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ž•¡<EFBFBD>ú2  ù”¡Þø2i
g g
eC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\android_gradle_build.json  ɹŒèø2à •¡Þø2n eC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\android_gradle_build.json  Ž•¡<EFBFBD>ú2à •¡Þø2n
l l
jC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\android_gradle_build_mini.json  ɹŒèø2 †•¡Þø2[ jC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\android_gradle_build_mini.json  Ž•¡<EFBFBD>ú2 †•¡Þø2[
Y Y
WC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\build.ninja  ɹŒèø2ŒÜ þ¡Þø2_ WC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\build.ninja  •¡<EFBFBD>ú2ŒÜ þ¡Þø2_
] ]
[C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\build.ninja.txt  ɹŒèø2d [C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\build.ninja.txt  •¡<EFBFBD>ú2d
b b
`C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\build_file_index.txt  ɹŒèø2 K <20>•¡Þø2e `C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\build_file_index.txt  •¡<EFBFBD>ú2 K <20>•¡Þø2e
c c
aC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\compile_commands.json  ɹŒèø2i aC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\compile_commands.json  •¡<EFBFBD>ú2i
g g
eC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\compile_commands.json.bin  ɹŒèø2 o eC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\compile_commands.json.bin  •¡<EFBFBD>ú2 o
m m
kC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\metadata_generation_command.txt  ɹŒèø2 kC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\metadata_generation_command.txt  •¡<EFBFBD>ú2
Ñ ‰•¡Þø2b Ñ ‰•¡Þø2b
` `
^C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\prefab_config.json  ɹŒèø2  ( •¡Þø2g ^C:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\prefab_config.json  •¡<EFBFBD>ú2  ( •¡Þø2g
e e
cC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\symbol_folder_index.txt  ɹŒèø2  Z Œ•¡Þø2O cC:\Flutter Applications\Git_New\FCSC\android\app\.cxx\Debug\29y7472m\x86_64\symbol_folder_index.txt  •¡<EFBFBD>ú2  Z Œ•¡Þø2O
M M
KC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ɹŒèø2 § œ¬ùšõ2 KC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  •¡<EFBFBD>ú2 § œ¬ùšõ2

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -0,0 +1,17 @@
abstract class PopupAssetPath {
static const _basePath = 'assets/country-profile/icons';
static const capital = '$_basePath/capital.png';
static const area = '$_basePath/area.png';
static const exports = '$_basePath/exports.png';
static const female = '$_basePath/female.png';
static const imports = '$_basePath/imports.png';
static const IncomeLevel = '$_basePath/IncomLevel.png';
static const inflows = '$_basePath/inflows.png';
static const male = '$_basePath/male.png';
static const nominal = '$_basePath/nominal.png';
static const outflows = '$_basePath/outflows.png';
static const perCapita = '$_basePath/perCapita.png';
static const population = '$_basePath/population.png';
static const real = '$_basePath/real.png';
}

View File

@ -1,6 +1,7 @@
import 'dart:ui'; import 'dart:ui';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:dotted_border/dotted_border.dart';
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/popup_asset_path.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 DetailedCountryProfilePage extends StatelessWidget { class DetailedCountryProfilePage extends StatelessWidget {
@ -281,56 +282,66 @@ class CategoryPopupContent extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final lineBorder=Padding(
padding: const EdgeInsets.only(top:8.0,bottom: 8.0),
child: DottedBorder(
borderPadding: EdgeInsets.zero,
padding: EdgeInsets.zero,
dashPattern: [8, 4],
strokeWidth: 2,
color: Colors.grey,
child: SizedBox(
width: double.maxFinite,
height: 0,
),
),
);
switch (category) { switch (category) {
case 'Demography': case 'Demography':
return Column( return Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
const SizedBox(height: 8),
Container(
width: 50,
height: 5,
decoration: BoxDecoration(
color: Colors.grey[300],
borderRadius: BorderRadius.circular(10),
),
),
const SizedBox(height: 16), const SizedBox(height: 16),
_DemographyItem( _DemographyItem(
icon: Icons.location_city, icon: PopupAssetPath.capital,
title: 'Capital City', title: 'Capital City',
value: 'Buenos Aires', value: 'Buenos Aires',
), ),
const Divider(), lineBorder,
_DemographyItem( _DemographyItem(
icon: Icons.map, icon: PopupAssetPath.area,
title: 'Surface Area', title: 'Surface Area',
value: '2,780,400 sq. km', value: '2,780,400 sq. km',
), ),
const Divider(), lineBorder,
_DemographyStatItem( _DemographyStatItem(
icon: Icons.groups, icon: PopupAssetPath.population,
title: '2021 Population', title: '2021 Population',
value: '45.81 M', value: '45.81 M',
suffix: '32 ↑ Rank', suffix: '32',
suffixStyle: const TextStyle(color: Colors.green, fontSize: 12), arrow:Icons.arrow_upward,
suffixText: 'Rank',
), ),
const Divider(), lineBorder,
_DemographyStatItem( _DemographyStatItem(
icon: Icons.male, icon: PopupAssetPath.male,
title: '2021 Male Population', title: '2021 Male Population',
value: '22.35 M', value: '22.35 M',
suffix: '0.98% ↑ Growth Rate', suffix: '0.98%',
valueColor: Colors.deepPurple, arrow:Icons.arrow_upward,
suffixText: 'Growth Rate',
valueColor: Color(0xFF00205B),
), ),
const Divider(), lineBorder,
_DemographyStatItem( _DemographyStatItem(
icon: Icons.female, icon:PopupAssetPath.female,
title: '2021 Female Population', title: '2021 Female Population',
value: '23.46 M', value: '23.46 M',
suffix: '0.93% ↑ Growth Rate', suffix: '0.93%',
valueColor: Colors.purple, arrow:Icons.arrow_upward,
suffixText: 'Growth Rate',
valueColor: Color(0xFF751398),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
], ],
@ -340,43 +351,34 @@ class CategoryPopupContent extends StatelessWidget {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
const SizedBox(height: 8),
Container(
width: 50,
height: 5,
decoration: BoxDecoration(
color: Colors.grey[300],
borderRadius: BorderRadius.circular(10),
),
),
const SizedBox(height: 16), const SizedBox(height: 16),
_GDPMetricItem( _GDPMetricItem(
icon: Icons.apartment, icon: PopupAssetPath.nominal,
title: '2021 Nominal GDP (AED)', title: '2021 Nominal GDP (AED)',
value: '1.8 T', value: '1.8 T',
rank: '26', rank: '26',
rankDirection: '', rankDirection: Icons.arrow_downward,
rankColor: Colors.red, rankColor: Color(0xFFED1C24),
), ),
const Divider(), lineBorder,
_GDPMetricItem( _GDPMetricItem(
icon: Icons.public, icon: PopupAssetPath.real,
title: '2021 Real GDP (AED)', title: '2021 Real GDP (AED)',
value: '2.08 T', value: '2.08 T',
rank: '22', rank: '22',
rankDirection: '', rankDirection: Icons.arrow_downward,
rankColor: Colors.red, rankColor: Color(0xFFED1C24),
), ),
const Divider(), lineBorder,
_GDPMetricItem( _GDPMetricItem(
icon: Icons.groups_3, icon: PopupAssetPath.perCapita,
title: '2021 GDP Per Capita (AED)', title: '2021 GDP Per Capita (AED)',
value: '39.38 K', value: '39.38 K',
rank: '64', rank: '64',
rankDirection: '', rankDirection: Icons.arrow_downward,
rankColor: Colors.red, rankColor: Color(0xFFED1C24),
), ),
const Divider(), lineBorder,
const SizedBox(height: 8), const SizedBox(height: 8),
const Icon(Icons.stacked_bar_chart, color: Colors.grey), const Icon(Icons.stacked_bar_chart, color: Colors.grey),
const SizedBox(height: 4), const SizedBox(height: 4),
@ -397,15 +399,6 @@ class CategoryPopupContent extends StatelessWidget {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
const SizedBox(height: 8),
Container(
width: 50,
height: 5,
decoration: BoxDecoration(
color: Colors.grey[300],
borderRadius: BorderRadius.circular(10),
),
),
const SizedBox(height: 16), const SizedBox(height: 16),
_FDIItem( _FDIItem(
icon: Icons.trending_down, icon: Icons.trending_down,
@ -414,7 +407,7 @@ class CategoryPopupContent extends StatelessWidget {
growthRate: '-15.94%', growthRate: '-15.94%',
isPositive: false, isPositive: false,
), ),
const Divider(), lineBorder,
_FDIItem( _FDIItem(
icon: Icons.swap_horizontal_circle_outlined, icon: Icons.swap_horizontal_circle_outlined,
title: '2020 FDI Inflows (AED)', title: '2020 FDI Inflows (AED)',
@ -422,7 +415,7 @@ class CategoryPopupContent extends StatelessWidget {
growthRate: '-39.68%', growthRate: '-39.68%',
isPositive: false, isPositive: false,
), ),
const Divider(), lineBorder,
_FDIItem( _FDIItem(
icon: Icons.thumb_up_alt_outlined, icon: Icons.thumb_up_alt_outlined,
title: '2021 FDI Stocks (AED)', title: '2021 FDI Stocks (AED)',
@ -438,15 +431,6 @@ class CategoryPopupContent extends StatelessWidget {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
const SizedBox(height: 8),
Container(
width: 50,
height: 5,
decoration: BoxDecoration(
color: Colors.grey[300],
borderRadius: BorderRadius.circular(10),
),
),
const SizedBox(height: 16), const SizedBox(height: 16),
_TradeItem( _TradeItem(
icon: Icons.cached, icon: Icons.cached,
@ -455,7 +439,7 @@ class CategoryPopupContent extends StatelessWidget {
growthRate: '39.89%', growthRate: '39.89%',
isPositive: true, isPositive: true,
), ),
const Divider(), lineBorder,
_TradeItem( _TradeItem(
icon: Icons.download_outlined, icon: Icons.download_outlined,
title: '2021 Imports (AED)', title: '2021 Imports (AED)',
@ -463,7 +447,7 @@ class CategoryPopupContent extends StatelessWidget {
growthRate: '40.79%', growthRate: '40.79%',
isPositive: true, isPositive: true,
), ),
const Divider(), lineBorder,
_TradeItem( _TradeItem(
icon: Icons.upload_outlined, icon: Icons.upload_outlined,
title: '2021 Exports (AED)', title: '2021 Exports (AED)',
@ -479,17 +463,6 @@ class CategoryPopupContent extends StatelessWidget {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
const SizedBox(height: 8),
Center(
child: Container(
width: 50,
height: 5,
decoration: BoxDecoration(
color: Colors.grey[300],
borderRadius: BorderRadius.circular(10),
),
),
),
const SizedBox(height: 16), const SizedBox(height: 16),
const Center( const Center(
child: Text( child: Text(
@ -563,15 +536,19 @@ class CategoryPopupContent extends StatelessWidget {
} }
Widget _DemographyItem({ Widget _DemographyItem({
required IconData icon, required String icon,
required String title, required String title,
required String value, required String value,
}) { }) {
return Column( return Column(
children: [ children: [
Icon(icon, size: 32, color: Colors.grey), Image.asset(
icon,
width: 40,
height: 40,
),
const SizedBox(height: 4), const SizedBox(height: 4),
Text(title, style: const TextStyle(color: Colors.grey)), Text(title, style: const TextStyle(color: Color(0xFF666666))),
const SizedBox(height: 4), const SizedBox(height: 4),
Text( Text(
value, value,
@ -583,83 +560,113 @@ Widget _DemographyItem({
} }
Widget _DemographyStatItem({ Widget _DemographyStatItem({
required IconData icon, required String icon,
required String title, required String title,
required String value, required String value,
String? suffix, String? suffix,
IconData? arrow,
String ? suffixText,
TextStyle? suffixStyle, TextStyle? suffixStyle,
Color? valueColor, Color? valueColor,
}) { }) {
return Column( return Column(
children: [ children: [
Icon(icon, size: 32, color: Colors.grey), Image.asset(
const SizedBox(height: 4), icon,
Text(title, style: const TextStyle(color: Colors.grey)), width: 40,
const SizedBox(height: 4), height: 40,
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),
),
],
),
), ),
const SizedBox(height: 4),
Text(title, style: const TextStyle(color: Color(0xFF666666))),
const SizedBox(height: 4),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
value,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 28,
color: valueColor ?? Colors.black,
),
),
SizedBox(width: 6,),
if (suffix != null)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Text(
suffix,
style: suffixStyle ??
const TextStyle(fontSize: 16, color: Colors.green,fontWeight: FontWeight.w500),
),
Icon(arrow, size: 16, color: Colors.green),
],
),
Text(
suffixText!,
style: suffixStyle ??
const TextStyle(fontSize: 12, color: Color(0xFF666666)),
),
],
),
],
)
], ],
); );
} }
Widget _GDPMetricItem({ Widget _GDPMetricItem({
required IconData icon, required String icon,
required String title, required String title,
required String value, required String value,
required String rank, required String rank,
required String rankDirection, required IconData rankDirection,
required Color rankColor, required Color rankColor,
}) { }) {
return Column( return Column(
children: [ children: [
Icon(icon, size: 32, color: Colors.grey), Image.asset(
icon,
width: 40,
height: 40,
),
const SizedBox(height: 4), const SizedBox(height: 4),
Text(title, style: const TextStyle(color: Colors.grey)), Text(title, style: const TextStyle(color: Color(0xFF666666))),
const SizedBox(height: 4), const SizedBox(height: 4),
RichText( Row(
textAlign: TextAlign.center, mainAxisAlignment: MainAxisAlignment.center,
text: TextSpan( children: [
children: [ Text(
TextSpan( value,
text: '$value ', style: TextStyle(
style: const TextStyle( fontWeight: FontWeight.bold,
fontWeight: FontWeight.bold, fontSize: 28,
fontSize: 18, color: Colors.black,
color: Colors.black,
),
), ),
TextSpan( ),
text: '$rank $rankDirection\n', SizedBox(width: 12,),
style: TextStyle( Column(
fontSize: 12, crossAxisAlignment: CrossAxisAlignment.start,
color: rankColor, children: [
), Row(
children: [
Text(
rank,
style: TextStyle(fontSize: 16, color:rankColor,fontWeight: FontWeight.w500),),
Icon(rankDirection, size: 16, color: rankColor),
],
),
Text(
'Rank',
style: const TextStyle(fontSize: 12, color: Color(0xFF666666)),
),
],
), ),
const TextSpan( ],
text: 'Rank',
style: TextStyle(fontSize: 10, color: Colors.grey),
),
],
),
), ),
], ],
); );
@ -808,10 +815,7 @@ void showCategoryPopup(BuildContext context, String category) {
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
), ),
child: Padding(
padding: const EdgeInsets.all(16.0),
child: CategoryPopupContent(category: category), child: CategoryPopupContent(category: category),
),
), ),
), ),
); );

View File

@ -433,6 +433,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.1" version: "2.1.1"
dotted_border:
dependency: "direct main"
description:
name: dotted_border
sha256: "108837e11848ca776c53b30bc870086f84b62ed6e01c503ed976e8f8c7df9c04"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
equatable: equatable:
dependency: transitive dependency: transitive
description: description:
@ -1156,6 +1164,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.9.1" version: "1.9.1"
path_drawing:
dependency: transitive
description:
name: path_drawing
sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977
url: "https://pub.dev"
source: hosted
version: "1.0.1"
path_parsing: path_parsing:
dependency: transitive dependency: transitive
description: description:

View File

@ -27,6 +27,7 @@ dependencies:
url_launcher: ^6.3.1 url_launcher: ^6.3.1
path_provider: ^2.1.5 path_provider: ^2.1.5
screenshot: ^3.0.0 screenshot: ^3.0.0
dotted_border: 2.1.0
# dynamic_layouts: # dynamic_layouts:
# git: # git:
# url: https://github.com/flutter/packages.git # url: https://github.com/flutter/packages.git
@ -162,6 +163,7 @@ flutter:
- assets/country-profile/ - assets/country-profile/
- assets/country-profile/CategoryFile/ - assets/country-profile/CategoryFile/
- assets/competitiveness/ - assets/competitiveness/
- assets/country-profile/icons/
fonts: fonts:
- family: Segoe - family: Segoe