OAuth added

This commit is contained in:
Surendiran 2025-08-06 11:06:27 +05:30
parent fe712c6708
commit bebe2df4dc
55 changed files with 3338 additions and 2797 deletions

View File

@ -2,27 +2,27 @@ C/C++ Structured Log}
{ {
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/additional_project_files.txtC y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  <EFBFBD>àÕ€„3  ¡¹ñÀ÷2z ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¿ŒÍLJ3  ¡¹ñÀ÷2z
x x
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/android_gradle_build.json  <EFBFBD>àÕ€„3 £¹ñÀ÷2 v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/android_gradle_build.json  ¿ŒÍLJ3 £¹ñÀ÷2
} }
{/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/android_gradle_build_mini.json  <EFBFBD>àÕ€„3ƒ ¥¹ñÀ÷2l {/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/android_gradle_build_mini.json  ¿ŒÍLJ3ƒ ¥¹ñÀ÷2l
j j
h/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build.ninja  <EFBFBD>àÕ€„3êÌ ޹ñÀ÷2p h/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build.ninja  ¿ŒÍLJ3êÌ ޹ñÀ÷2p
n n
l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build.ninja.txt  <EFBFBD>àÕ€„3u l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build.ninja.txt  ¿ŒÍLJ3u
s s
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build_file_index.txt  <EFBFBD>àÕ€„3 _ ¦¹ñÀ÷2v q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build_file_index.txt  ¿ŒÍLJ3 _ ¦¹ñÀ÷2v
t t
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/compile_commands.json  <EFBFBD>àÕ€„3z r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/compile_commands.json  ¿ŒÍLJ3z
x x
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/compile_commands.json.bin  <EFBFBD>àÕ€„3 v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/compile_commands.json.bin  ¿ŒÍLJ3
~ ~
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/metadata_generation_command.txt  <EFBFBD>àÕ€„3 |/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/metadata_generation_command.txt  ¿ŒÍLJ3
ö ¦¹ñÀ÷2s ö ¦¹ñÀ÷2s
q q
o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/prefab_config.json  <EFBFBD>àÕ€„3  ( ¦¹ñÀ÷2x o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/prefab_config.json  ¿ŒÍLJ3  ( ¦¹ñÀ÷2x
v v
t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/symbol_folder_index.txt  <EFBFBD>àÕ€„3  k ¦¹ñÀ÷2c t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/symbol_folder_index.txt  ¿ŒÍLJ3  k ¦¹ñÀ÷2c
a a
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  <EFBFBD>àÕ€„3 ¤ òÑÞ€á2 _/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ¿ŒÍLJ3 ¤ òÑÞ€á2

View File

@ -2,27 +2,27 @@ C/C++ Structured Log
} }
{/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/additional_project_files.txtC {/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ±àÕ€„3  ¸ïòÀ÷2| ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÆŒÍLJ3  ¸ïòÀ÷2|
z z
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/android_gradle_build.json  ±àÕ€„3 ºïòÀ÷2<C3B7> x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/android_gradle_build.json  ÆŒÍLJ3 ºïòÀ÷2<C3B7>
 
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/android_gradle_build_mini.json  ±àÕ€„3 »ïòÀ÷2n }/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/android_gradle_build_mini.json  ÆŒÍLJ3 »ïòÀ÷2n
l l
j/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build.ninja  ±àÕ€„3öÌ ªïòÀ÷2r j/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build.ninja  ÆŒÍLJ3öÌ ªïòÀ÷2r
p p
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build.ninja.txt  ±àÕ€„3w n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build.ninja.txt  ÆŒÍLJ3w
u u
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build_file_index.txt  ±àÕ€„3 _ »ïòÀ÷2x s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build_file_index.txt  ÆŒÍLJ3 _ »ïòÀ÷2x
v v
t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/compile_commands.json  ±àÕ€„3| t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/compile_commands.json  ÆŒÍLJ3|
z z
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/compile_commands.json.bin  ±àÕ€„3 ƒ x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/compile_commands.json.bin  ÆŒÍLJ3 ƒ
 
~/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/metadata_generation_command.txt  ±àÕ€„3 ~/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/metadata_generation_command.txt  ÆŒÍLJ3
€ »ïòÀ÷2u € »ïòÀ÷2u
s s
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/prefab_config.json  ±àÕ€„3  ( »ïòÀ÷2z q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/prefab_config.json  ÆŒÍLJ3  ( »ïòÀ÷2z
x x
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/symbol_folder_index.txt  ±àÕ€„3  m »ïòÀ÷2c v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/symbol_folder_index.txt  ÆŒÍLJ3  m »ïòÀ÷2c
a a
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ±àÕ€„3 ¤ òÑÞ€á2 _/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ÆŒÍLJ3 ¤ òÑÞ€á2

View File

@ -2,27 +2,27 @@ C/C++ Structured Logw
u u
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/additional_project_files.txtC s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¿àÕ€„3  „òòÀ÷2t ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÉŒÍLJ3  „òòÀ÷2t
r r
p/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/android_gradle_build.json  ¿àÕ€„3ô „òòÀ÷2y p/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/android_gradle_build.json  ÉŒÍLJ3ô „òòÀ÷2y
w w
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/android_gradle_build_mini.json  ¿àÕ€„3÷ …òòÀ÷2f u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/android_gradle_build_mini.json  ÉŒÍLJ3÷ …òòÀ÷2f
d d
b/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build.ninja  ¿àÕ€„3ÆÌ ûñòÀ÷2j b/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build.ninja  ÉŒÍLJ3ÆÌ ûñòÀ÷2j
h h
f/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build.ninja.txt  ¿àÕ€„3o f/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build.ninja.txt  ÉŒÍLJ3o
m m
k/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build_file_index.txt  ¿àÕ€„3 _ …òòÀ÷2p k/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build_file_index.txt  ÉŒÍLJ3 _ …òòÀ÷2p
n n
l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/compile_commands.json  ¿àÕ€„3t l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/compile_commands.json  ÉŒÍLJ3t
r r
p/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/compile_commands.json.bin  ¿àÕ€„3 z p/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/compile_commands.json.bin  ÉŒÍLJ3 z
x x
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/metadata_generation_command.txt  ¿àÕ€„3 v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/metadata_generation_command.txt  ÉŒÍLJ3
Ø …òòÀ÷2m Ø …òòÀ÷2m
k k
i/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/prefab_config.json  ¿àÕ€„3  ( …òòÀ÷2r i/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/prefab_config.json  ÉŒÍLJ3  ( …òòÀ÷2r
p p
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/symbol_folder_index.txt  ¿àÕ€„3  e …òòÀ÷2c n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/symbol_folder_index.txt  ÉŒÍLJ3  e …òòÀ÷2c
a a
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ¿àÕ€„3 ¤ òÑÞ€á2 _/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ÉŒÍLJ3 ¤ òÑÞ€á2

View File

@ -2,27 +2,27 @@ C/C++ Structured Logz
x x
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/additional_project_files.txtC v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÊàÕ€„3  •ôòÀ÷2w ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÌŒÍLJ3  •ôòÀ÷2w
u u
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/android_gradle_build.json  ÊàÕ€„3ú •ôòÀ÷2| s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/android_gradle_build.json  ÍŒÍLJ3ú •ôòÀ÷2|
z z
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/android_gradle_build_mini.json  ÊàÕ€„3ý ôòÀ÷2i x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/android_gradle_build_mini.json  ÍŒÍLJ3ý ôòÀ÷2i
g g
e/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build.ninja  ÊàÕ€„3ØÌ <20>ôòÀ÷2m e/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build.ninja  ÍŒÍLJ3ØÌ <20>ôòÀ÷2m
k k
i/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build.ninja.txt  ÊàÕ€„3r i/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build.ninja.txt  ÍŒÍLJ3r
p p
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build_file_index.txt  ÊàÕ€„3 _ ôòÀ÷2s n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build_file_index.txt  ÍŒÍLJ3 _ ôòÀ÷2s
q q
o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/compile_commands.json  ÊàÕ€„3w o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/compile_commands.json  ÍŒÍLJ3w
u u
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/compile_commands.json.bin  ÊàÕ€„3 } s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/compile_commands.json.bin  ÍŒÍLJ3 }
{ {
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/metadata_generation_command.txt  ÊàÕ€„3 y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/metadata_generation_command.txt  ÍŒÍLJ3
ç ôòÀ÷2p ç ôòÀ÷2p
n n
l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/prefab_config.json  ÊàÕ€„3  ( ôòÀ÷2u l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/prefab_config.json  ÍŒÍLJ3  ( ôòÀ÷2u
s s
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/symbol_folder_index.txt  ÊàÕ€„3  h ôòÀ÷2c q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/symbol_folder_index.txt  ÍŒÍLJ3  h ôòÀ÷2c
a a
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ÊàÕ€„3 ¤ òÑÞ€á2 _/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ÍŒÍLJ3 ¤ òÑÞ€á2

View File

@ -2,27 +2,27 @@ C/C++ Structured Log
 
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/additional_project_files.txtC /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Á÷<EFBFBD>×3  ™ªÇŸô2„ ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  äô˜È‡3  ™ªÇŸô2„
<EFBFBD> <EFBFBD>
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/android_gradle_build.json  Á÷<EFBFBD>×3 œªÇŸô2Š /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/android_gradle_build.json  äô˜È‡3 œªÇŸô2Š
 
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/android_gradle_build_mini.json  Á÷<EFBFBD>×3 ¤ªÇŸô2u /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/android_gradle_build_mini.json  äô˜È‡3 ¤ªÇŸô2u
s s
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja  Á÷<EFBFBD>×3²Í ù©ÇŸô2y q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja  äô˜È‡3²Í ù©ÇŸô2y
w w
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja.txt  Á÷<EFBFBD>×3~ u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja.txt  äô˜È‡3~
| |
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build_file_index.txt  Á÷<EFBFBD>×3 _ ¥ªÇŸô2 z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build_file_index.txt  äô˜È‡3 _ ¥ªÇŸô2
} }
{/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/compile_commands.json  Á÷<EFBFBD>×3 {/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/compile_commands.json  äô˜È‡3
<EFBFBD> <EFBFBD>
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/compile_commands.json.bin  Á÷<EFBFBD>×3  /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/compile_commands.json.bin  äô˜È‡3 
ˆ ˆ
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/metadata_generation_command.txt  Á÷<EFBFBD>×3 /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/metadata_generation_command.txt  äô˜È‡3
š ¥ªÇŸô2| š ¥ªÇŸô2|
z z
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/prefab_config.json  Á÷<EFBFBD>×3  ( ¥ªÇŸô2<C3B4> x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/prefab_config.json  äô˜È‡3  ( ¥ªÇŸô2<C3B4>
 
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/symbol_folder_index.txt  Á÷<EFBFBD>×3  t ¥ªÇŸô2c }/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/symbol_folder_index.txt  äô˜È‡3  t ¥ªÇŸô2c
a a
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Á÷<EFBFBD>×3 ¤ òÑÞ€á2 _/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  äô˜È‡3 ¤ òÑÞ€á2

View File

@ -2,27 +2,27 @@ C/C++ Structured Log
 
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/additional_project_files.txtC /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ü÷<EFBFBD>×3  £¼ÇŸô2‡ ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  õô˜È‡3  £¼ÇŸô2‡
 
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build.json  Ü÷<EFBFBD>×3 ¤¼ÇŸô2Œ <EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build.json  õô˜È‡3 ¤¼ÇŸô2Œ
 
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build_mini.json  Ü÷<EFBFBD>×3 ¥¼ÇŸô2w /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build_mini.json  õô˜È‡3 ¥¼ÇŸô2w
u u
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja  Ü÷<EFBFBD>×3¾Í ¼ÇŸô2{ s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja  õô˜È‡3¾Í ¼ÇŸô2{
y y
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja.txt  Ü÷<EFBFBD>×3 w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja.txt  õô˜È‡3
~ ~
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build_file_index.txt  Ü÷<EFBFBD>×3 _ ¦¼ÇŸô2<C3B4> |/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build_file_index.txt  õô˜È‡3 _ ¦¼ÇŸô2<C3B4>
 
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/compile_commands.json  Ü÷<EFBFBD>×3 }/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/compile_commands.json  õô˜È‡3
 
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/compile_commands.json.bin  Ü÷<EFBFBD>×3 <09> <EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/compile_commands.json.bin  õô˜È‡3 <09>
Š Š
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/metadata_generation_command.txt  Ü÷<EFBFBD>×3 /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/metadata_generation_command.txt  õô˜È‡3
¤ ¥¼ÇŸô2~ ¤ ¥¼ÇŸô2~
| |
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/prefab_config.json  Ü÷<EFBFBD>×3  ( ¦¼ÇŸô2„ z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/prefab_config.json  õô˜È‡3  ( ¦¼ÇŸô2„
<EFBFBD> <EFBFBD>
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/symbol_folder_index.txt  Ü÷<EFBFBD>×3  v ¦¼ÇŸô2c /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/symbol_folder_index.txt  õô˜È‡3  v ¦¼ÇŸô2c
a a
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Ü÷<EFBFBD>×3 ¤ òÑÞ€á2 _/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  õô˜È‡3 ¤ òÑÞ€á2

View File

@ -2,27 +2,27 @@ C/C++ Structured Log
~ ~
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/additional_project_files.txtC |/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  é÷<EFBFBD>×3  µÂÇŸô2} ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÿô˜È‡3  µÂÇŸô2}
{ {
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build.json  é÷<EFBFBD>×3 ·ÂÇŸô2ƒ y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build.json  ÿô˜È‡3 ·ÂÇŸô2ƒ
 
~/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build_mini.json  é÷<EFBFBD>×3 ¸ÂÇŸô2o ~/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build_mini.json  ÿô˜È‡3 ¸ÂÇŸô2o
m m
k/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja  é÷<EFBFBD>×3ŽÍ ¨ÂÇŸô2s k/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja  ÿô˜È‡3ŽÍ ¨ÂÇŸô2s
q q
o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja.txt  é÷<EFBFBD>×3x o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja.txt  ÿô˜È‡3x
v v
t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build_file_index.txt  é÷<EFBFBD>×3 _ ¹ÂÇŸô2y t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build_file_index.txt  ÿô˜È‡3 _ ¹ÂÇŸô2y
w w
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json  é÷<EFBFBD>×3} u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json  ÿô˜È‡3}
{ {
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json.bin  é÷<EFBFBD>×3 y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json.bin  ÿô˜È‡3
<EFBFBD> <EFBFBD>
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/metadata_generation_command.txt  é÷<EFBFBD>×3 /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/metadata_generation_command.txt  ÿô˜È‡3
ü ¹ÂÇŸô2v ü ¹ÂÇŸô2v
t t
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/prefab_config.json  é÷<EFBFBD>×3  ( ¹ÂÇŸô2{ r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/prefab_config.json  ÿô˜È‡3  ( ¹ÂÇŸô2{
y y
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/symbol_folder_index.txt  é÷<EFBFBD>×3  n ¹ÂÇŸô2c w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/symbol_folder_index.txt  ÿô˜È‡3  n ¹ÂÇŸô2c
a a
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  é÷<EFBFBD>×3 ¤ òÑÞ€á2 _/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ÿô˜È‡3 ¤ òÑÞ€á2

View File

@ -2,27 +2,27 @@ C/C++ Structured Log
<EFBFBD> <EFBFBD>
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/additional_project_files.txtC /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ð÷<EFBFBD>×3  ·ÆÇŸô2€ ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ‰õ˜È‡3  ·ÆÇŸô2€
~ ~
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build.json  ð÷<EFBFBD>×3Œ ¸ÆÇŸô2‡ |/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build.json  ‰õ˜È‡3Œ ¸ÆÇŸô2‡
 
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build_mini.json  ð÷<EFBFBD>×3<18> ¹ÆÇŸô2r <EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build_mini.json  ‰õ˜È‡3<18> ¹ÆÇŸô2r
p p
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja  ð÷<EFBFBD>×3 Í §ÆÇŸô2v n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja  ‰õ˜È‡3 Í §ÆÇŸô2v
t t
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja.txt  ð÷<EFBFBD>×3{ r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja.txt  ‰õ˜È‡3{
y y
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build_file_index.txt  ð÷<EFBFBD>×3 _ ¹ÆÇŸô2| w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build_file_index.txt  ‰õ˜È‡3 _ ¹ÆÇŸô2|
z z
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/compile_commands.json  ð÷<EFBFBD>×3 x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/compile_commands.json  ‰õ˜È‡3
~ ~
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/compile_commands.json.bin  ð÷<EFBFBD>×3 ˆ |/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/compile_commands.json.bin  ‰õ˜È‡3 ˆ
 
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/metadata_generation_command.txt  ð÷<EFBFBD>×3 /Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/metadata_generation_command.txt  ‰õ˜È‡3
 ¹ÆÇŸô2y  ¹ÆÇŸô2y
w w
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/prefab_config.json  ð÷<EFBFBD>×3  ( ¹ÆÇŸô2~ u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/prefab_config.json  ‰õ˜È‡3  ( ¹ÆÇŸô2~
| |
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/symbol_folder_index.txt  ð÷<EFBFBD>×3  q ¹ÆÇŸô2c z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/symbol_folder_index.txt  ‰õ˜È‡3  q ¹ÆÇŸô2c
a a
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ð÷<EFBFBD>×3 ¤ òÑÞ€á2 _/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ‰õ˜È‡3 ¤ òÑÞ€á2

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 826 B

After

Width:  |  Height:  |  Size: 876 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 KiB

View File

@ -139,22 +139,59 @@ class _SessionCheckScreenState extends ConsumerState<SessionCheckScreen> {
class SplashScreen extends StatelessWidget { class SplashScreen extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final isDark = Theme.of(context).brightness == Brightness.dark;
return Scaffold( return Scaffold(
backgroundColor: Colors.white, backgroundColor: isDark ? null : Colors.white,
body: Center( body: Container(
child: Column( decoration: BoxDecoration(
mainAxisAlignment: MainAxisAlignment.center, color: isDark ? null : Colors.white,
children: [ image: isDark
Image.asset('assets/images/logo.png', width: 150), // App Logo ? DecorationImage(
// SizedBox(height: 20), image: AssetImage('assets/splash_screen/background_splash_dark.png'), // 🔄 Add this background for dark mode
// CircularProgressIndicator(), // Loading indicator fit: BoxFit.cover,
], )
: null,
),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 🔄 White or normal logo depending on theme
Spacer(),
Image.asset(
isDark
? 'assets/splash_screen/FCSCLogo_dark.png'
: 'assets/splash_screen/FCSCLogo_light.png',
width: 150,
),
SizedBox(height: 20),
// Optional: Progress indicator or version
// CircularProgressIndicator(color: isDark ? Colors.white : Colors.black),
Spacer(),
Padding(
padding: const EdgeInsets.only(bottom: 24.0),
child: Column(
children: [
Text(
'© حقوق التأليف والنشر',
style: TextStyle(
color: isDark ? Colors.white70 : Colors.black54,
fontSize: 14,
fontFamily: 'NotoKufi',
),
),
],
),
),
],
),
), ),
), ),
); );
} }
} }
// import 'dart:math'; // import 'dart:math';
// //
// import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';

View File

@ -20,4 +20,5 @@ abstract class MiscIconAssetPath {
static const group = '$_basePath/group.png'; static const group = '$_basePath/group.png';
static const search = '$_basePath/search.png'; static const search = '$_basePath/search.png';
static const Search = '$_basePath/Search.svg'; static const Search = '$_basePath/Search.svg';
static const successMsg = '$_basePath/successMsg.png';
} }

View File

@ -1,5 +1,6 @@
abstract class LogoAssetPath { abstract class LogoAssetPath {
static const _basePath = 'assets/logos'; static const _basePath = 'assets/logos';
static const fcsc = '$_basePath/fcsc.png'; static const fcsc = '$_basePath/fcsc.png';
static const uaeStat = '$_basePath/uae_stat.png'; static const uaeStatLight = '$_basePath/uae_stat_light.png';
static const uaeStatDark = '$_basePath/uae_stat_dark.png';
} }

View File

@ -61,7 +61,7 @@ class UaeNumbers extends ConsumerWidget {
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF414042), color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF000000),
), ),
), ),
body: uaenumberWidget(), body: uaenumberWidget(),
@ -320,7 +320,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
}, },
) )
: null, : null,
contentPadding: EdgeInsets.symmetric(vertical: 12, horizontal: 18.0), // contentPadding: EdgeInsets.symmetric(vertical: 12, horizontal: 18.0),
border: InputBorder.none, border: InputBorder.none,
// contentPadding: // contentPadding:
// EdgeInsets.symmetric(vertical: 9, horizontal: 18.0), // EdgeInsets.symmetric(vertical: 9, horizontal: 18.0),
@ -358,7 +358,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
myheight, myheight,
borderColor, borderColor,
colorPattern, colorPattern,
mainTopic['main_topic']), mainTopic['main_topic'],isDarkTheme),
); );
}), }),
], ],
@ -371,7 +371,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
} }
List<Widget> _buildSubTopics(List<dynamic> subTopics, double myWidth, myheight, List<Widget> _buildSubTopics(List<dynamic> subTopics, double myWidth, myheight,
Color borderColor, String colorPattern, mainTopic) { Color borderColor, String colorPattern, mainTopic,isDarkTheme) {
subTopics.sort((a, b) => subTopics.sort((a, b) =>
(a['sub_topic_list_order'] ?? 0).compareTo(b['sub_topic_list_order'] ?? 0)); (a['sub_topic_list_order'] ?? 0).compareTo(b['sub_topic_list_order'] ?? 0));
@ -379,7 +379,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
.map<Widget>((subTopic) => Column( .map<Widget>((subTopic) => Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
buildCategoryTitle(subTopic['sub_topic'], borderColor), buildCategoryTitle(subTopic['sub_topic'], isDarkTheme),
..._buildDataSetCards(subTopic['tile_data'] ?? [], myWidth, ..._buildDataSetCards(subTopic['tile_data'] ?? [], myWidth,
borderColor, colorPattern, mainTopic), borderColor, colorPattern, mainTopic),
], ],
@ -430,7 +430,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
return rows; return rows;
} }
Widget buildCategoryTitle(String title, Color color) { Widget buildCategoryTitle(String title, isDarkTheme) {
return Padding( return Padding(
padding: const EdgeInsets.only(top: 1.2, bottom: 1.2), padding: const EdgeInsets.only(top: 1.2, bottom: 1.2),
child: Center( child: Center(
@ -443,7 +443,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
), ),
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: color, color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF666666),
), ),
), ),
), ),

View File

@ -11,12 +11,13 @@ class Welcomepage extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
double myheight = MediaQuery.of(context).size.height; double myheight = MediaQuery.of(context).size.height;
double mywidth = MediaQuery.of(context).size.width; double mywidth = MediaQuery.of(context).size.width;
final fcscBanner = Image.asset( final fcscBanner = Image.asset(
BannerAssetPath.fcscLogoLight, BannerAssetPath.fcscLogoLight,
height: 40, height: 40,
); );
final uaestat = Image.asset( final uaestat = Image.asset(
LogoAssetPath.uaeStat, LogoAssetPath.uaeStatLight,
height: 50, height: 50,
); );

View File

@ -347,8 +347,16 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
isOn: locale?.languageCode == 'en', isOn: locale?.languageCode == 'en',
knobTextWhenOn: 'ع', knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN', knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300, pathColorWhenOn: Color(0xFFD9D9D9),
pathColorWhenOff: Colors.grey.shade300, pathColorWhenOff: Color(0xFFD9D9D9),
knobTextStyleWhenOn: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
knobTextStyleWhenOff: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
onTap: () { onTap: () {
print('has validated $hasValidated'); print('has validated $hasValidated');
final formState = _formKey.currentState; final formState = _formKey.currentState;

View File

@ -349,8 +349,16 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
isOn: locale?.languageCode == 'en', isOn: locale?.languageCode == 'en',
knobTextWhenOn: 'ع', knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN', knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300, pathColorWhenOn: Color(0xFFD9D9D9),
pathColorWhenOff: Colors.grey.shade300, pathColorWhenOff: Color(0xFFD9D9D9),
knobTextStyleWhenOn: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
knobTextStyleWhenOff: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
onTap: () { onTap: () {
print('has validated $hasValidated'); print('has validated $hasValidated');
final formState = _formKey.currentState; final formState = _formKey.currentState;

View File

@ -396,8 +396,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
shape: BoxShape.circle, shape: BoxShape.circle,
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: Colors.black12, color: isDarkTheme ? Colors.white : Colors.black12,
blurRadius: 6, blurRadius: isDarkTheme ? 0 : 6,
offset: Offset(0, 2), offset: Offset(0, 2),
), ),
], ],
@ -410,6 +410,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
); );
} }
return PopScope( return PopScope(
canPop: false, // Allow back navigation only if not login screen canPop: false, // Allow back navigation only if not login screen
onPopInvokedWithResult: (didPop, result) { onPopInvokedWithResult: (didPop, result) {
@ -417,7 +418,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
context.go('/login'); // Show exit confirmation dialog context.go('/login'); // Show exit confirmation dialog
}, },
child: Scaffold( child: Scaffold(
backgroundColor: isDarkTheme ? Color(0xFF111111) : Colors.white, backgroundColor: isDarkTheme ? Colors.black : Colors.white,
// backgroundColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
body: SafeArea( body: SafeArea(
child: Stack(children: [ child: Stack(children: [
SingleChildScrollView( SingleChildScrollView(
@ -435,8 +437,16 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
isOn: locale?.languageCode == 'en', isOn: locale?.languageCode == 'en',
knobTextWhenOn: 'ع', knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN', knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300, pathColorWhenOn: Color(0xFFD9D9D9),
pathColorWhenOff: Colors.grey.shade300, pathColorWhenOff: Color(0xFFD9D9D9),
knobTextStyleWhenOn: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
knobTextStyleWhenOff: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
onTap: () { onTap: () {
final formState = _formKey.currentState; final formState = _formKey.currentState;
ref ref
@ -466,11 +476,39 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
SizedBox(height: screenheight / 4), SizedBox(height: screenheight / 4),
buildIconContainer(Icons.check_circle_rounded,
Color(0xFFB68A34)
// Color(0xFF7DAFBC)
Container(
width: 60,
height: 60,
decoration: BoxDecoration(
color: Color(0xFFF9F9F9),
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
color: isDarkTheme
? Colors.white
: Colors.black12,
blurRadius: isDarkTheme ? 0 : 6,
// offset: Offset(0, 2),
),
],
),
child: Center(
child: SizedBox(
height: 35,
width: 35,
child: FittedBox(
fit: BoxFit.contain,
child: Image.asset(
MiscIconAssetPath.successMsg),
),
),
),
), ),
// buildIconContainer(
// // Icons.check, Color(0xFFB68A34)
// // Color(0xFF7DAFBC)
// ),
SizedBox(height: 20), SizedBox(height: 20),
Text( Text(
context.translate( context.translate(
@ -699,9 +737,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
? const Color(0xFF000000) ? const Color(0xFF000000)
: Colors.white, : Colors.white,
errorStyle: TextStyle( errorStyle: TextStyle(
color: isDarkTheme color: Color(0xFFD83731),
? Color(0xFFFFA200) // color: isDarkTheme
: Color(0xFFb22222), // ? Color(0xFFFFA200)
// : Color(0xFFb22222),
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
@ -751,7 +790,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
borderRadius: borderRadius:
BorderRadius.circular(10), BorderRadius.circular(10),
borderSide: BorderSide( borderSide: BorderSide(
color: Colors.deepPurple, color: Color(0xFFB68A34),
width: 2), // Focused border width: 2), // Focused border
), ),
errorBorder: OutlineInputBorder( errorBorder: OutlineInputBorder(
@ -807,9 +846,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
? const Color(0xFF000000) ? const Color(0xFF000000)
: Colors.white, : Colors.white,
errorStyle: TextStyle( errorStyle: TextStyle(
color: isDarkTheme color: Color(0xFFD83731),
? Color(0xFFFFA200) // color: isDarkTheme
: Color(0xFFb22222), // ? Color(0xFFFFA200)
// : Color(0xFFb22222),
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
@ -854,7 +894,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
borderRadius: borderRadius:
BorderRadius.circular(10), BorderRadius.circular(10),
borderSide: BorderSide( borderSide: BorderSide(
color: Colors.deepPurple, color: Color(0xFFB68A34),
width: 2), // Focused border width: 2), // Focused border
), ),
errorBorder: OutlineInputBorder( errorBorder: OutlineInputBorder(
@ -914,9 +954,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
? const Color(0xFF000000) ? const Color(0xFF000000)
: Colors.white, : Colors.white,
errorStyle: TextStyle( errorStyle: TextStyle(
color: isDarkTheme color: Color(0xFFD83731),
? Color(0xFFFFA200) // color: isDarkTheme
: Color(0xFFb22222), // ? Color(0xFFFFA200)
// : Color(0xFFb22222),
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
@ -992,7 +1033,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
borderRadius: borderRadius:
BorderRadius.circular(10), BorderRadius.circular(10),
borderSide: BorderSide( borderSide: BorderSide(
color: Colors.deepPurple, color: Color(0xFFB68A34),
width: 2), // Focused border width: 2), // Focused border
), ),
errorBorder: OutlineInputBorder( errorBorder: OutlineInputBorder(
@ -1051,9 +1092,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
? const Color(0xFF000000) ? const Color(0xFF000000)
: Colors.white, : Colors.white,
errorStyle: TextStyle( errorStyle: TextStyle(
color: isDarkTheme color: Color(0xFFD83731),
? Color(0xFFFFA200)
: Color(0xFFb22222),
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
@ -1119,7 +1158,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
borderRadius: borderRadius:
BorderRadius.circular(10), BorderRadius.circular(10),
borderSide: BorderSide( borderSide: BorderSide(
color: Colors.deepPurple, color: Color(0xFFB68A34),
width: 2), // Focused border width: 2), // Focused border
), ),
errorBorder: OutlineInputBorder( errorBorder: OutlineInputBorder(
@ -1405,6 +1444,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
borderRadius: borderRadius:
BorderRadius.circular(10), BorderRadius.circular(10),
), ),
padding: EdgeInsets.symmetric(vertical: 16.5),
), ),
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -1439,7 +1479,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
), ),
), ),
), ),
SizedBox(height: 5), SizedBox(height: 10),
Text( Text(
AppLocalizations.of(context)! AppLocalizations.of(context)!
.account_confirmation, .account_confirmation,
@ -1459,7 +1499,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
: Color(0xFF898C81), : Color(0xFF898C81),
), ),
), ),
SizedBox(height: 5), SizedBox(height: 10),
Padding( Padding(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
top: 5.0, top: 5.0,
@ -1479,6 +1519,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
borderRadius: borderRadius:
BorderRadius.circular(10), BorderRadius.circular(10),
), ),
padding: EdgeInsets.symmetric(vertical: 16.5),
), ),
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -1518,7 +1559,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
height: 10, height: 10,
), ),
Padding( Padding(
padding: const EdgeInsets.all(20.0), padding: const EdgeInsets.symmetric(
horizontal: 70.0),
// child: Container( // child: Container(
// height: screenheight / 16, // height: screenheight / 16,
// width: screenwidth / 3, // width: screenwidth / 3,

View File

@ -2532,7 +2532,9 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
)), ),
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF000000),
),
) )
: Text( : Text(
context.translate( context.translate(
@ -2543,7 +2545,9 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
)), ),
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF000000),
),
), ),
// appbarColor: Color(int.parse(widget.bgColor)), // Example color // appbarColor: Color(int.parse(widget.bgColor)), // Example color
appbarColor: appbarColor:
@ -2584,8 +2588,8 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
'#898C81') '#898C81')
.replaceFirst('#', '0xff'))), .replaceFirst('#', '0xff'))),
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: Radius.circular(12.0), topLeft: Radius.circular(20),
topRight: Radius.circular(12.0), topRight: Radius.circular(20),
), ),
), ),
width: double.infinity, width: double.infinity,
@ -2795,21 +2799,7 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
strokeWidth: 2, strokeWidth: 2,
), ),
) // Show loading spinner ) // Show loading spinner
: isDarkTheme : Image(image: AssetImage(isDarkTheme ? UaeNumbersAssetPath.shareDark : UaeNumbersAssetPath.shareLight))
? SvgPicture.asset(
UaeNumbersAssetPath
.shareDark,
semanticsLabel: 'share',
width: 24,
height: 24,
)
: SvgPicture.asset(
UaeNumbersAssetPath
.shareLight,
semanticsLabel: 'share',
width: 24,
height: 24,
),
], ],
), ),
), ),
@ -2861,7 +2851,7 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
// ), // ),
], ],
), ),
) ),
// IconButton( // IconButton(
// icon: Icon(Icons.filter_alt_outlined, // icon: Icon(Icons.filter_alt_outlined,
// color: Colors.white, size: 24), // color: Colors.white, size: 24),
@ -2870,11 +2860,13 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
// context, filterData, chartsData); // context, filterData, chartsData);
// }, // },
// ), // ),
], ],
), ),
SizedBox(width: 10), SizedBox(width: 10),
], ],
), ),
SizedBox(height: 5),
], ],
), ),
), ),
@ -2897,6 +2889,7 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
child: ListView( child: ListView(
children: [ children: [
SizedBox(height: 5),
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
@ -3042,11 +3035,11 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
.replaceFirst('#', '0xff'), .replaceFirst('#', '0xff'),
), ),
), // Border color ), // Border color
width: 1, // Border width width: 2, // Border width
), ),
color: backgroundColor, color: backgroundColor,
borderRadius: BorderRadius.circular( borderRadius: BorderRadius.circular(
8), // Optional: Rounded corners 5), // Optional: Rounded corners
), ),
child: Padding( child: Padding(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(16.0),
@ -3148,11 +3141,11 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
Color(int.parse(widget.bgColor.replaceFirst('0x', ''), radix: 16)); Color(int.parse(widget.bgColor.replaceFirst('0x', ''), radix: 16));
return Container( return Container(
margin: EdgeInsets.symmetric(horizontal: 5.0), margin: EdgeInsets.symmetric(horizontal: 5.0),
width: 30.0, // Set the width of the circle width: 25.0, // Set the width of the circle
height: 25.0, height: 25.0,
decoration: BoxDecoration( decoration: BoxDecoration(
// color: onPressed == null ? Colors.grey[400] : Colors.white, // color: onPressed == null ? Colors.grey[400] : Colors.white,
color: onPressed == null color: onPressed != null
? Color(int.parse((chartScreenData['header_color'] ?? '#898C81') ? Color(int.parse((chartScreenData['header_color'] ?? '#898C81')
.replaceFirst('#', '0xff'))) .replaceFirst('#', '0xff')))
: isDarkTheme : isDarkTheme
@ -3168,10 +3161,17 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
// ), // ),
// ], // ],
), ),
child: IconButton( child: Center( // Center the IconButton
onPressed: onPressed, child: IconButton(
icon: Icon(icon, color: onPressed == null ? Colors.white : Colors.grey), padding: EdgeInsets.zero, // Remove default padding
iconSize: 12.5, constraints: BoxConstraints(), // Remove default constraints
onPressed: onPressed,
icon: Icon(
icon,
color: onPressed != null ? Colors.white : Color(0xFFC6BEB2),
size: 20.5,
),
),
), ),
); );
} }
@ -3206,7 +3206,7 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
'NotoKufi', 'NotoKufi',
), ),
// color: isActive ? Colors.black : Colors.white, // color: isActive ? Colors.black : Colors.white,
color: isDarkTheme ? Colors.white : Colors.black, color: chartScreenData['main_topic'] == 'SOCIAL' ? isActive ? Colors.white : isDarkTheme ? Colors.white : Colors.black : isActive ? Colors.black : isDarkTheme ? Colors.white : Colors.black,
// color: Colors.white, // color: Colors.white,
fontWeight: isActive ? FontWeight.w500 : FontWeight.w400, fontWeight: isActive ? FontWeight.w500 : FontWeight.w400,
fontSize: 13, fontSize: 13,
@ -3260,11 +3260,11 @@ class CardWidget extends StatelessWidget {
(themeMode == ThemeMode.system && (themeMode == ThemeMode.system &&
MediaQuery.of(context).platformBrightness == Brightness.dark); MediaQuery.of(context).platformBrightness == Brightness.dark);
final Map<String, Color> mainTopicColors = { // final Map<String, Color> mainTopicColors = {
'ECONOMY': Color(0xFF071F3B), // 'ECONOMY': Color(0xFF071F3B),
'SOCIAL': Color(0xFF4F241B), // 'SOCIAL': Color(0xFF4F241B),
'ENVIRONMENT': Color(0xFF16523C), // 'ENVIRONMENT': Color(0xFF16523C),
}; // };
final String mainTopic = chartScreenData['main_topic']; final String mainTopic = chartScreenData['main_topic'];
@ -3283,45 +3283,45 @@ class CardWidget extends StatelessWidget {
margin: const EdgeInsets.all(10), margin: const EdgeInsets.all(10),
// width: card_full_length ? double.infinity : null, // width: card_full_length ? double.infinity : null,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(5),
border: Border.all( border: Border.all(
color: Color(int.parse( color: Color(int.parse(
(chartScreenData['border_color'] ?? '#898C81') (chartScreenData['border_color'] ?? '#898C81')
.replaceFirst('#', '0xff'))), .replaceFirst('#', '0xff'))),
// Dynamic border color // Dynamic border color
width: 1, // Adjust border thickness width: 2, // Adjust border thickness
), ),
), ),
child: Card( child: Card(
margin: const EdgeInsets.all(0), margin: const EdgeInsets.all(0),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(5),
), ),
elevation: 2, elevation: 2,
child: Container( child: Container(
// height: cardHeight, // height: cardHeight,
height: 158, height: 135,
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
left: 16.0, right: 16.0, bottom: 2.0, top: 1.0), left: 16.0, right: 16.0, bottom: 2.0, top: 1.0),
decoration: BoxDecoration( decoration: BoxDecoration(
color: backgroundColor, // Move color inside BoxDecoration color: backgroundColor, // Move color inside BoxDecoration
borderRadius: BorderRadius.circular( borderRadius: BorderRadius.circular(
12), // Ensure border radius is applied 5), // Ensure border radius is applied
), ),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Image.network( // Image.network(
card_logo ?? '', // card_logo ?? '',
width: 30, // width: 30,
height: 30, // height: 30,
errorBuilder: (context, error, stackTrace) { // errorBuilder: (context, error, stackTrace) {
return Icon(Icons.public, // return Icon(Icons.public,
color: Color(0xFF90B0D5), size: 30); // Fallback icon // color: Color(0xFF90B0D5), size: 30); // Fallback icon
}, // },
), // ),
const SizedBox(height: 1), // const SizedBox(height: 1),
MouseRegion( MouseRegion(
onEnter: (event) { onEnter: (event) {
// Show tooltip on hover // Show tooltip on hover
@ -3344,6 +3344,7 @@ class CardWidget extends StatelessWidget {
chart_heading ?? 'NA', chart_heading ?? 'NA',
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 13,
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
@ -3369,7 +3370,7 @@ class CardWidget extends StatelessWidget {
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
fontSize: 11, fontSize: 13,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: isDarkTheme ? Color(0xFFFFFFFF) : Colors.black87, color: isDarkTheme ? Color(0xFFFFFFFF) : Colors.black87,
), ),
@ -3433,30 +3434,30 @@ class CardWidget extends StatelessWidget {
margin: const EdgeInsets.all(10), margin: const EdgeInsets.all(10),
// width: card_full_length ? double.infinity : null, // width: card_full_length ? double.infinity : null,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(5),
border: Border.all( border: Border.all(
color: Color(int.parse( color: Color(int.parse(
(chartScreenData['border_color'] ?? '#898C81') (chartScreenData['border_color'] ?? '#898C81')
.replaceFirst('#', '0xff'))), // Dynamic border color .replaceFirst('#', '0xff'))), // Dynamic border color
width: 1, // Adjust border thickness width: 2, // Adjust border thickness
), ),
), ),
child: Card( child: Card(
margin: const EdgeInsets.all(0), margin: const EdgeInsets.all(0),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(5),
), ),
elevation: 0, // Remove shadow to keep only the outli elevation: 0, // Remove shadow to keep only the outli
child: Container( child: Container(
height: 158, height: 135,
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
// padding: const EdgeInsets.only( // padding: const EdgeInsets.only(
// left: 10.0, right: 10.0, bottom: 5.0, top: 1.0), // left: 10.0, right: 10.0, bottom: 5.0, top: 1.0),
decoration: BoxDecoration( decoration: BoxDecoration(
color: backgroundColor, // Move color inside BoxDecoration color: backgroundColor, // Move color inside BoxDecoration
borderRadius: borderRadius:
BorderRadius.circular(12), // Ensure border radius is applied BorderRadius.circular(5), // Ensure border radius is applied
), ),
child: Column( child: Column(
mainAxisSize: mainAxisSize:
@ -3465,16 +3466,16 @@ class CardWidget extends StatelessWidget {
children: [ children: [
// const Icon(Icons.public, // const Icon(Icons.public,
// color: Color(0xFF90B0D5), size: 30), // color: Color(0xFF90B0D5), size: 30),
Image.network( // Image.network(
card_logo ?? '', // card_logo ?? '',
width: 30, // width: 30,
height: 30, // height: 30,
errorBuilder: (context, error, stackTrace) { // errorBuilder: (context, error, stackTrace) {
return Icon(Icons.public, // return Icon(Icons.public,
color: Color(0xFF90B0D5), size: 30); // Fallback icon // color: Color(0xFF90B0D5), size: 30); // Fallback icon
}, // },
), // ),
const SizedBox(height: 3), // const SizedBox(height: 3),
MouseRegion( MouseRegion(
onEnter: (event) { onEnter: (event) {
final overlay = Overlay.of(context); final overlay = Overlay.of(context);
@ -3494,7 +3495,7 @@ class CardWidget extends StatelessWidget {
chart_heading ?? 'NA', chart_heading ?? 'NA',
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 10, fontSize: 13,
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
@ -3520,7 +3521,7 @@ class CardWidget extends StatelessWidget {
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
fontSize: 11, fontSize: 13,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: isDarkTheme ? Color(0xFFFFFFFF) : Colors.black87, color: isDarkTheme ? Color(0xFFFFFFFF) : Colors.black87,
), ),

View File

@ -328,7 +328,7 @@ class ChartWidget extends StatelessWidget {
// title: '${percentage.toStringAsFixed(1)}%', // title: '${percentage.toStringAsFixed(1)}%',
// title: percentage >= 0.1 ? '${percentage.toStringAsFixed(1)}%' : '', // title: percentage >= 0.1 ? '${percentage.toStringAsFixed(1)}%' : '',
title: percentage >= 0.1 ? '$displayTitle\n${percentage.toStringAsFixed(1)}%' : '', title: percentage >= 0.1 ? '$displayTitle\n${percentage.toStringAsFixed(1)}%' : '',
radius: isTouched ? 60 : 50, radius: isTouched ? 40 : 30,
// Increase size when touched // Increase size when touched
titleStyle: TextStyle( titleStyle: TextStyle(
@ -342,7 +342,7 @@ class ChartWidget extends StatelessWidget {
// color: Colors.white, // color: Colors.white,
), ),
// titlePositionPercentageOffset: 1.4, // titlePositionPercentageOffset: 1.4,
titlePositionPercentageOffset: 1.8, titlePositionPercentageOffset: 2.1,
); );
}).toList(); }).toList();
} }

View File

@ -34,84 +34,92 @@ class InternetCheckScreen extends ConsumerWidget {
double myHeight = MediaQuery.of(context).size.height; double myHeight = MediaQuery.of(context).size.height;
return Scaffold( return PopScope(
body: Padding( canPop: false,
padding: const EdgeInsets.all(8.0), onPopInvokedWithResult: (didPop, result) {
child: Center( if (didPop) return;
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset('assets/logos/no-internet.png', width: 150),
SizedBox(height: myHeight / 40),
Text(context.translate('No Internet Connection','لا يوجد اتصال بالإنترنت'),
style: TextStyle(fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontSize: 25, fontWeight: FontWeight.bold),),
Text(context.translate('Please check your Wi-Fi or Mobile Data','يرجى التحقق من شبكة Wi-Fi أو بيانات الهاتف المحمول'),
style: TextStyle(fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontSize: 15, fontWeight: FontWeight.w500),),
Text(context.translate('connection and try again','واتصالك ثم حاول مرة أخرى'),
style: TextStyle(fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontSize: 15, fontWeight: FontWeight.w500),),
SizedBox(height: myHeight / 40),
ElevatedButton(
onPressed: () async {
bool hasInternet =
await InternetConnectionChecker.instance.hasConnection;
if (hasInternet) { },
ScaffoldMessenger.of(context).showSnackBar( child: Scaffold(
SnackBar( body: Padding(
content: Text(context.translate('Internet is back!','عاد الاتصال بالإنترنت!')), padding: const EdgeInsets.all(8.0),
backgroundColor: Colors.green, child: Center(
), child: Column(
); mainAxisAlignment: MainAxisAlignment.center,
context.pop(); children: [
// Future.delayed(Duration(seconds: 1), () { Image.asset('assets/logos/no-internet.png', width: 150),
// if (context.canPop()) { SizedBox(height: myHeight / 40),
// context.pop(); Text(context.translate('No Internet Connection','لا يوجد اتصال بالإنترنت'),
// } else { style: TextStyle(fontFamily: context.translate(
// context.go('/myhomepage'); 'Roboto',
// } 'NotoKufi',
// }); ), fontSize: 25, fontWeight: FontWeight.bold),),
} else { Text(context.translate('Please check your Wi-Fi or Mobile Data','يرجى التحقق من شبكة Wi-Fi أو بيانات الهاتف المحمول'),
ScaffoldMessenger.of(context).showSnackBar( style: TextStyle(fontFamily: context.translate(
SnackBar( 'Roboto',
content: 'NotoKufi',
Text(context.translate('No internet connection. Please try again.','لا يوجد اتصال بالإنترنت. يرجى المحاولة مرة أخرى.')), ), fontSize: 15, fontWeight: FontWeight.w500),),
backgroundColor: Colors.red, Text(context.translate('connection and try again','واتصالك ثم حاول مرة أخرى'),
), style: TextStyle(fontFamily: context.translate(
); 'Roboto',
} 'NotoKufi',
}, ), fontSize: 15, fontWeight: FontWeight.w500),),
style: ElevatedButton.styleFrom( SizedBox(height: myHeight / 40),
backgroundColor: Color(0xFFA7887A), ElevatedButton(
shape: RoundedRectangleBorder( onPressed: () async {
borderRadius: BorderRadius.all(Radius.circular(10)), bool hasInternet =
await InternetConnectionChecker.instance.hasConnection;
if (hasInternet) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(context.translate('Internet is back!','عاد الاتصال بالإنترنت!')),
backgroundColor: Colors.green,
),
);
context.pop();
// Future.delayed(Duration(seconds: 1), () {
// if (context.canPop()) {
// context.pop();
// } else {
// context.go('/myhomepage');
// }
// });
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content:
Text(context.translate('No internet connection. Please try again.','لا يوجد اتصال بالإنترنت. يرجى المحاولة مرة أخرى.')),
backgroundColor: Colors.red,
),
);
}
},
style: ElevatedButton.styleFrom(
backgroundColor: Color(0xFFA7887A),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Text( context.translate('Retry','إعادة المحاولة'),
style: TextStyle(fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontSize: 16, color: Colors.white),),
SizedBox(width: 8),
Icon(Icons.refresh, size: 16, color: Colors.white),
],
), ),
), ),
child: Row( ],
mainAxisSize: MainAxisSize.min, ),
children: [
Text( context.translate('Retry','إعادة المحاولة'),
style: TextStyle(fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontSize: 16, color: Colors.white),),
SizedBox(width: 8),
Icon(Icons.refresh, size: 16, color: Colors.white),
],
),
),
],
), ),
), ),
), ),
); );
} }
} }

View File

@ -69,6 +69,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
// To keep track of the selected date // To keep track of the selected date
DateTime? _selectedDate; DateTime? _selectedDate;
String? role; String? role;
int isOAuthLogin = 0;
// Date format for the display // Date format for the display
final DateFormat _dateFormat = DateFormat('yyyy-MM-dd'); final DateFormat _dateFormat = DateFormat('yyyy-MM-dd');
@ -181,6 +182,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
_usernameController.text = userDetailsResponse.data['uname'] ?? ''; _usernameController.text = userDetailsResponse.data['uname'] ?? '';
_emailController.text = userDetailsResponse.data['email'] ?? ''; _emailController.text = userDetailsResponse.data['email'] ?? '';
role = userDetailsResponse.data['role'] ?? ''; role = userDetailsResponse.data['role'] ?? '';
isOAuthLogin = userDetailsResponse.data['is_oauth_login'] ?? '';
}); });
} catch (e) { } catch (e) {
print('Error fetching user details: $e'); print('Error fetching user details: $e');
@ -252,8 +254,6 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
builder: (context, child) { builder: (context, child) {
return Theme( return Theme(
data: Theme.of(context).copyWith( data: Theme.of(context).copyWith(
dialogBackgroundColor:
Colors.white, // Background color of the date picker
textButtonTheme: TextButtonThemeData( textButtonTheme: TextButtonThemeData(
style: ButtonStyle( style: ButtonStyle(
shape: WidgetStateProperty.all(RoundedRectangleBorder( shape: WidgetStateProperty.all(RoundedRectangleBorder(
@ -262,9 +262,10 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
), ),
), ),
datePickerTheme: DatePickerThemeData( datePickerTheme: DatePickerThemeData(
backgroundColor: isDarkTheme ? Colors.black : Colors.white,
confirmButtonStyle: ButtonStyle( confirmButtonStyle: ButtonStyle(
backgroundColor: WidgetStateProperty.all( backgroundColor: WidgetStateProperty.all(
Color(0xFFAA8E83)), // OK button background color Color(0xFFB68A34)), // OK button background color
foregroundColor: WidgetStateProperty.all( foregroundColor: WidgetStateProperty.all(
Colors.white), // OK button text color Colors.white), // OK button text color
// minimumSize: WidgetStateProperty.all(Size(150, 50)), // minimumSize: WidgetStateProperty.all(Size(150, 50)),
@ -276,16 +277,18 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
cancelButtonStyle: ButtonStyle( cancelButtonStyle: ButtonStyle(
// backgroundColor: WidgetStateProperty.all(Colors.white), // Cancel button background color // backgroundColor: WidgetStateProperty.all(Colors.white), // Cancel button background color
foregroundColor: WidgetStateProperty.all( foregroundColor: WidgetStateProperty.all(
Color(0xFFAA8E83)), // Cancel button text color Color(0xFFB68A34)), // Cancel button text color
// minimumSize: WidgetStateProperty.all(Size(150, 50)), // minimumSize: WidgetStateProperty.all(Size(150, 50)),
minimumSize: WidgetStateProperty.all(Size(100, 40)), minimumSize: WidgetStateProperty.all(Size(100, 40)),
shape: WidgetStateProperty.all(RoundedRectangleBorder( shape: WidgetStateProperty.all(RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12.0), // Rounded corners borderRadius: BorderRadius.circular(12.0), // Rounded corners
side: const BorderSide( side: const BorderSide(
color: Color(0xFFAA8E83), width: 2), // Outline color color: Color(0xFFB68A34), width: 2), // Outline color
)), )),
), ),
), ),
dialogTheme: DialogThemeData(
backgroundColor: isDarkTheme ? Colors.black : Colors.white),
), ),
child: child!, child: child!,
); );
@ -464,6 +467,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
'تسجيل الخروج', 'تسجيل الخروج',
), ),
style: TextStyle( style: TextStyle(
// color: Color(0xFFB68A34),
color: Color(0xFF898C81), color: Color(0xFF898C81),
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
fontFamily: context.translate( fontFamily: context.translate(
@ -502,7 +506,8 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
'إلغاء', 'إلغاء',
), ),
style: TextStyle( style: TextStyle(
color: Color(0xFFAA8E83), // color: Color(0xFFAA8E83),
color: Color(0xFFB68A34),
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
@ -513,7 +518,8 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
TextButton( TextButton(
onPressed: () => logout(context), // Exit the app onPressed: () => logout(context), // Exit the app
style: TextButton.styleFrom( style: TextButton.styleFrom(
backgroundColor: Color(0xFFAA8E83), // Set background color // backgroundColor: Color(0xFFAA8E83), // Set background color
backgroundColor: Color(0xFFB68A34), // Set background color
// foregroundColor: Colors.white, // foregroundColor: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0), // Set text color borderRadius: BorderRadius.circular(10.0), // Set text color
@ -603,8 +609,16 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
isOn: locale?.languageCode == 'en', isOn: locale?.languageCode == 'en',
knobTextWhenOn: 'ع', knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN', knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300, pathColorWhenOn: Color(0xFFD9D9D9),
pathColorWhenOff: Colors.grey.shade300, pathColorWhenOff: Color(0xFFD9D9D9),
knobTextStyleWhenOn: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
knobTextStyleWhenOff: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
onTap: () { onTap: () {
final formState = _formKey.currentState; final formState = _formKey.currentState;
ref.read(localeProvider.notifier).toggleLocale(); ref.read(localeProvider.notifier).toggleLocale();
@ -728,6 +742,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
controller: _usernameController, controller: _usernameController,
focusNode: _focusNodes[0], focusNode: _focusNodes[0],
decoration: InputDecoration( decoration: InputDecoration(
errorStyle: TextStyle(
color: Color(0xFFD83731), // change to any color
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
// hintText: _showHints[0] ? 'Enter the User Name' : null, // hintText: _showHints[0] ? 'Enter the User Name' : null,
hintStyle: TextStyle( hintStyle: TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
@ -765,6 +786,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
controller: _emailController, controller: _emailController,
focusNode: _focusNodes[1], focusNode: _focusNodes[1],
decoration: InputDecoration( decoration: InputDecoration(
errorStyle: TextStyle(
color: Color(0xFFD83731), // change to any color
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
// hintText: // hintText:
// _showHints[1] ? 'mohammad.hassan@fcsc.gov.ae' : null, // _showHints[1] ? 'mohammad.hassan@fcsc.gov.ae' : null,
hintStyle: TextStyle( hintStyle: TextStyle(
@ -819,6 +847,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
controller: _fullNameController, controller: _fullNameController,
focusNode: _focusNodes[2], focusNode: _focusNodes[2],
decoration: InputDecoration( decoration: InputDecoration(
errorStyle: TextStyle(
color: Color(0xFFD83731), // change to any color
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
borderSide: BorderSide( borderSide: BorderSide(
@ -839,12 +874,33 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
fontSize: 14, fontSize: 14,
), ),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide( borderSide: BorderSide(
color: Color(0xFFB68A34), color: Color(0xFFB68A34),
// color: // color:
// isDarkTheme ? Colors.white : Color(0xFF7296BE), // isDarkTheme ? Colors.white : Color(0xFF7296BE),
), ),
borderRadius: BorderRadius.circular(8), ),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: const Color(0xFFB68A34),
width: 2,
),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: Color(0xFFD83731),
width: 1,
),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: Color(0xFFD83731),
width: 1,
),
), ),
counterText: '', counterText: '',
), ),
@ -877,6 +933,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
controller: _dateController, controller: _dateController,
focusNode: _focusNodes[3], focusNode: _focusNodes[3],
decoration: InputDecoration( decoration: InputDecoration(
errorStyle: TextStyle(
color: Color(0xFFD83731), // change to any color
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
borderSide: BorderSide( borderSide: BorderSide(
@ -896,6 +959,27 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
), ),
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: const Color(0xFFB68A34),
width: 2,
),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: Color(0xFFD83731),
width: 1,
),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: Color(0xFFD83731),
width: 1,
),
),
hintText: _showHints[3] ? 'DD/MM/YYYY' : null, hintText: _showHints[3] ? 'DD/MM/YYYY' : null,
//_showHints[3] ? 'Select your Date of Birth' : null, //_showHints[3] ? 'Select your Date of Birth' : null,
hintStyle: TextStyle( hintStyle: TextStyle(
@ -954,6 +1038,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
isExpanded: true, isExpanded: true,
value: _selectedCountry, value: _selectedCountry,
decoration: InputDecoration( decoration: InputDecoration(
errorStyle: TextStyle(
color: Color(0xFFD83731), // change to any color
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
borderSide: BorderSide( borderSide: BorderSide(
@ -972,6 +1063,27 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
), ),
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: const Color(0xFFB68A34),
width: 2,
),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: Color(0xFFD83731),
width: 1,
),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: Color(0xFFD83731),
width: 1,
),
),
labelText: context.translate('Select', ' اختيار')), labelText: context.translate('Select', ' اختيار')),
icon: Icon(Icons.keyboard_arrow_down_sharp, icon: Icon(Icons.keyboard_arrow_down_sharp,
color: _isHoveringDropdown color: _isHoveringDropdown
@ -1090,6 +1202,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
child: DropdownButtonFormField<String>( child: DropdownButtonFormField<String>(
value: _selectedLanguage, value: _selectedLanguage,
decoration: InputDecoration( decoration: InputDecoration(
errorStyle: TextStyle(
color: Color(0xFFD83731), // change to any color
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
borderSide: BorderSide( borderSide: BorderSide(
@ -1108,6 +1227,27 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
), ),
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: const Color(0xFFB68A34),
width: 2,
),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: Color(0xFFD83731),
width: 1,
),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: Color(0xFFD83731),
width: 1,
),
),
labelText: context.translate('Select', ' اختيار')), labelText: context.translate('Select', ' اختيار')),
icon: Icon(Icons.keyboard_arrow_down_sharp, icon: Icon(Icons.keyboard_arrow_down_sharp,
color: _isHoveringPreferredLang color: _isHoveringPreferredLang
@ -1149,9 +1289,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
}, },
side: BorderSide( side: BorderSide(
color: showError color: showError
? isDarkTheme ? Color(0xFFD83731)
? Color(0xFFB68A34)
: Color(0xFFb22222)
: Color(0xFFB68A34), : Color(0xFFB68A34),
// : isDarkTheme // : isDarkTheme
@ -1285,7 +1423,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
color: Color(0xFFb22222), color: Color(0xFFD83731),
fontSize: 12, fontSize: 12,
), ),
), ),
@ -1293,6 +1431,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
], ],
), ),
SizedBox(height: 20), SizedBox(height: 20),
if(isOAuthLogin != 1)
Center( Center(
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {

View File

@ -32,8 +32,16 @@ class LangToggle extends ConsumerWidget {
knobTextWhenOn: 'ع', knobTextWhenOn: 'ع',
paddingWhenOn: EdgeInsets.zero, paddingWhenOn: EdgeInsets.zero,
knobTextWhenOff: 'EN', knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300, pathColorWhenOn: Color(0xFFD9D9D9),
pathColorWhenOff: Colors.grey.shade300, pathColorWhenOff: Color(0xFFD9D9D9),
knobTextStyleWhenOn: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
knobTextStyleWhenOff: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
); );
} }
} }

View File

@ -10,6 +10,8 @@ class MyToggle extends StatelessWidget {
this.knobTextWhenOff = '', this.knobTextWhenOff = '',
this.pathColorWhenOn = Colors.green, this.pathColorWhenOn = Colors.green,
this.pathColorWhenOff = const Color(0xffD9D9D9), this.pathColorWhenOff = const Color(0xffD9D9D9),
required this.knobTextStyleWhenOn,
required this.knobTextStyleWhenOff,
}); });
final bool isOn; final bool isOn;
@ -19,6 +21,8 @@ class MyToggle extends StatelessWidget {
final Color pathColorWhenOn; final Color pathColorWhenOn;
final Color pathColorWhenOff; final Color pathColorWhenOff;
final void Function()? onTap; final void Function()? onTap;
final TextStyle knobTextStyleWhenOn;
final TextStyle knobTextStyleWhenOff;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -34,6 +38,10 @@ class MyToggle extends StatelessWidget {
); );
final knobText = Text( final knobText = Text(
isOn ? knobTextWhenOn : knobTextWhenOff, isOn ? knobTextWhenOn : knobTextWhenOff,
style: TextStyle(
color: isOn ? knobTextStyleWhenOn.color : knobTextStyleWhenOff.color,
fontWeight: isOn ? knobTextStyleWhenOn.fontWeight : knobTextStyleWhenOff.fontWeight,
),
); );
final shouldShowKnobText = (isOn && knobTextWhenOn.isNotEmpty) || final shouldShowKnobText = (isOn && knobTextWhenOn.isNotEmpty) ||
(!isOn && knobTextWhenOff.isNotEmpty); (!isOn && knobTextWhenOff.isNotEmpty);
@ -42,7 +50,7 @@ class MyToggle extends StatelessWidget {
radius: 21 / 2, radius: 21 / 2,
child: CircleAvatar( child: CircleAvatar(
backgroundColor: Colors.white, backgroundColor: Colors.white,
radius: 20 / 2, radius: 18 / 2,
child: shouldShowKnobText child: shouldShowKnobText
? FittedBox( ? FittedBox(
child: Padding( child: Padding(

View File

@ -63,7 +63,7 @@ class ThemedAppBar extends ConsumerWidget {
), ),
); );
final logo = Image.asset( final logo = Image.asset(
LogoAssetPath.uaeStat, LogoAssetPath.uaeStatLight,
height: 36, height: 36,
); );
final title = titleText == null final title = titleText == null

View File

@ -205,19 +205,20 @@ class LoginRoute extends HookConsumerWidget {
} }
// Function to send the reset password request // Function to send the reset password request
Future<void> forgotPasswordMail(String email) async { Future<String> forgotPasswordMail(String email) async {
final url = final url =
Uri.parse("${pb.baseUrl}api/auth/request-password-reset?email=$email"); Uri.parse("${pb.baseUrl}api/auth/request-password-reset?email=$email");
try { try {
final response = await http.get(url); final response = await http.get(url);
final body = json.decode(response.body);
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; // Success, no action needed here return body['status'] ?? 'Reset link sent successfully.';
} else { } else {
final errorResponse = json.decode(response.body); final errorResponse = json.decode(response.body);
throw Exception( throw Exception(
errorResponse['message'] ?? "Failed to send reset email."); errorResponse['status'] ?? "Failed to send reset email.");
} }
} catch (error) { } catch (error) {
throw Exception("Something went wrong. Please try again."); throw Exception("Something went wrong. Please try again.");
@ -329,7 +330,7 @@ class LoginRoute extends HookConsumerWidget {
print('themeMode $themeMode'); print('themeMode $themeMode');
} }
Future<void> googleLogin(BuildContext context, WidgetRef ref,platform) async { Future<void> oAuthGoogleAndAppleLogin(BuildContext context, WidgetRef ref,platform) async {
print(platform); print(platform);
try { try {
final authData = final authData =
@ -342,6 +343,7 @@ class LoginRoute extends HookConsumerWidget {
print("✅ Login Successful"); print("✅ Login Successful");
print(authData.record); print(authData.record);
final metaDetails = authData.meta;
final userDetails = authData.record; final userDetails = authData.record;
final userId = userDetails?.id; final userId = userDetails?.id;
final email = userDetails?.data['email'] ?? ''; final email = userDetails?.data['email'] ?? '';
@ -354,8 +356,10 @@ class LoginRoute extends HookConsumerWidget {
print("Email: ${isProfileComplete}"); print("Email: ${isProfileComplete}");
print("Email: ${loginCount}"); print("Email: ${loginCount}");
await saveUserId(userId!, loginCount); await loginCountApi(userId!);
// await getDeviceToken(context, id); await updateOAuthUserDetails(userId!, metaDetails);
// await saveUserId(userId!, loginCount);
// await getDeviceToken(context, userId);
await initializeTheme(context, ref, userId); await initializeTheme(context, ref, userId);
final session = await context.loaderWithErrorDialog( final session = await context.loaderWithErrorDialog(
@ -420,6 +424,71 @@ class LoginRoute extends HookConsumerWidget {
} }
} }
Future<void> loginCountApi(String userId) async {
if (userId.isNotEmpty) {
final url =
// Uri.parse("https://pb.venbait.in/api/login_success?id=$userId");
Uri.parse('$apiUrl/api/login_success?id=$userId');
try {
final response = await http.get(url);
if (response.statusCode == 200) {
print("Login success API call successful: ${response.body}");
final count = jsonDecode(response.body);
loginCount = count["login_count"];
print(loginCount);
} else {
print(
"Failed to call login success API. Status code: ${response.statusCode}");
}
} catch (e) {
print("Error calling login success API: $e");
}
await saveUserId(userId, loginCount);
}
}
Future<void> updateOAuthUserDetails(String userId, metaDetails) async {
final url = "${pb.baseUrl}/api/collections/users/records/$userId";
try {
// // Authenticate admin (Persist session globally instead)
// await pb.admins.authWithPassword(
// 'pb@venbainfotech.com',
// 'pb@venbainfotech.com',
// );
final userDetails = metaDetails['rawUser'];
print('oauthDetails $userDetails');
final response = await http.patch(
Uri.parse(url),
headers: {
'Content-Type': 'application/json', // Add this
'Authorization': pb.authStore.token, // Correct way to send auth token
},
body: jsonEncode({
"user_mail_verify": true,
"reviewed": true,
"role": 'user',
"uname": userDetails['name'],
"status": 'Approved',
"is_oauth_login": 1,
}),
);
if (response.statusCode == 200) {
print("✅ Device token updated successfully!");
} else {
print("❌ Failed to update device token: ${response.body}");
}
} catch (e) {
print("🚨 Error updating device token: $e");
}
}
// SessionEntity _sessionEntityFromPocketbaseRecord(RecordAuth ra) { // SessionEntity _sessionEntityFromPocketbaseRecord(RecordAuth ra) {
// final decodedToken = JwtDecoder.decode(ra.token); // final decodedToken = JwtDecoder.decode(ra.token);
// final expInSeconds = decodedToken['exp']; // final expInSeconds = decodedToken['exp'];
@ -556,10 +625,10 @@ class LoginRoute extends HookConsumerWidget {
'إعادة تعيين كلمة المرور', 'إعادة تعيين كلمة المرور',
), ),
style: TextStyle( style: TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
fontSize: locale?.languageCode == 'ar' ? 18 : 20, fontSize: locale?.languageCode == 'ar' ? 18 : 20,
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81), color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81),
fontWeight: FontWeight.w600), fontWeight: FontWeight.w600),
@ -575,7 +644,7 @@ class LoginRoute extends HookConsumerWidget {
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
color: isDarkTheme ? Color(0xFFFFA100) : Colors.red, color: Color(0xFFD83731),
), ),
labelText: context.translate( labelText: context.translate(
'Email address', 'Email address',
@ -587,42 +656,40 @@ class LoginRoute extends HookConsumerWidget {
'NotoKufi', 'NotoKufi',
), ),
fontSize: locale?.languageCode == 'ar' ? 13 : 16, fontSize: locale?.languageCode == 'ar' ? 13 : 16,
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81), // For label text color color: isDarkTheme
? Color(0xFFFFFFFF)
: Color(0xFF898C81), // For label text color
// fontWeight: FontWeight.w600, // fontWeight: FontWeight.w600,
), ),
// Default Border // Default Border
// Bottom border (no outline) // Bottom border (no outline)
enabledBorder: UnderlineInputBorder( enabledBorder: UnderlineInputBorder(
borderSide: BorderSide( borderSide: BorderSide(
color: isDarkTheme ? Colors.white : const Color(0xFF898C81), color: isDarkTheme
? Colors.white
: const Color(0xFF898C81),
width: 1, width: 1,
), ),
), ),
focusedBorder: UnderlineInputBorder( focusedBorder: UnderlineInputBorder(
borderSide: BorderSide( borderSide: BorderSide(
color: isDarkTheme ? const Color(0xFF24B4FB) : Colors.deepPurple, color: Color(0xFFB68A34),
width: 2, width: 2,
), ),
), ),
errorBorder: UnderlineInputBorder( errorBorder: UnderlineInputBorder(
borderSide: BorderSide( borderSide: BorderSide(
color: isDarkTheme ? const Color(0xFFFFA100) : Colors.red, color: Color(0xFFD83731),
width: 1, width: 1,
), ),
), ),
focusedErrorBorder: UnderlineInputBorder( focusedErrorBorder: UnderlineInputBorder(
borderSide: BorderSide( borderSide: BorderSide(
color: isDarkTheme ? const Color(0xFFFFA100) : Colors.red, color: Color(0xFFD83731),
width: 2, width: 2,
), ),
), ),
), ),
), ),
), ),
@ -631,13 +698,12 @@ class LoginRoute extends HookConsumerWidget {
onPressed: Navigator.of(dialogCtx, rootNavigator: true).pop, onPressed: Navigator.of(dialogCtx, rootNavigator: true).pop,
style: TextButton.styleFrom( style: TextButton.styleFrom(
// backgroundColor: Colors.white, // Background color // backgroundColor: Colors.white, // Background color
foregroundColor: isDarkTheme ? Color(0xFF24B4FB) : Color(0xFF92722A), // Font (text) color foregroundColor: Color(0xFF92722A), // Font (text) color
side: BorderSide( side: BorderSide(
color: isDarkTheme ? Color(0xFF24B4FB) : Color(0xFF92722A) color: Color(0xFF92722A)), // Border outline color
), // Border outline color
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: borderRadius:
BorderRadius.circular(8), // Optional: Rounded corners BorderRadius.circular(8), // Optional: Rounded corners
), ),
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
horizontal: 10, vertical: 10), // Optional: Padding horizontal: 10, vertical: 10), // Optional: Padding
@ -647,10 +713,13 @@ class LoginRoute extends HookConsumerWidget {
'Return', 'Return',
'يعود', 'يعود',
), ),
style: TextStyle( fontSize: context.translate(12, 10), fontFamily: context.translate( style: TextStyle(
'Roboto', fontSize: context.translate(12, 10),
'NotoKufi', fontFamily: context.translate(
),), 'Roboto',
'NotoKufi',
),
),
), ),
), ),
ElevatedButton( ElevatedButton(
@ -662,10 +731,10 @@ class LoginRoute extends HookConsumerWidget {
); );
}, },
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
backgroundColor: isDarkTheme ? Color(0xFF24B4FB) : Color(0xFF92722A), backgroundColor: Color(0xFFB68A34),
foregroundColor: Colors.white, foregroundColor: Colors.white,
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
horizontal: 10 , vertical: 10), // Optional: Adjusts size horizontal: 10, vertical: 10), // Optional: Adjusts size
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
// Optional: Adds rounded corners // Optional: Adds rounded corners
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
@ -676,10 +745,13 @@ class LoginRoute extends HookConsumerWidget {
'Send Email', 'Send Email',
'إرسال بريد إلكتروني', 'إرسال بريد إلكتروني',
), ),
style: TextStyle( fontSize: context.translate(12, 10), fontFamily: context.translate( style: TextStyle(
'Roboto', fontSize: context.translate(12, 10),
'NotoKufi', fontFamily: context.translate(
),), 'Roboto',
'NotoKufi',
),
),
), ),
), ),
], ],
@ -689,21 +761,38 @@ class LoginRoute extends HookConsumerWidget {
if (email == null) return; if (email == null) return;
if (!context.mounted) return; if (!context.mounted) return;
// await context.loaderWithErrorDialog(() async {
// await forgotPasswordMail(email);
// });
String status = '';
await context.loaderWithErrorDialog(() async { await context.loaderWithErrorDialog(() async {
await forgotPasswordMail(email); status = await forgotPasswordMail(email);
}); });
if (!context.mounted) return; if (!context.mounted) return;
if (status == 'success') {
context.simpleDialog(
title: context.translate(
'Success!',
'نجاح',
),
content: context.translate(
'An email has been sent to $email with further details.',
'تم إرسال بريد إلكتروني إلى $email يتضمن المزيد من التفاصيل.',
),
);
} else {
context.simpleDialog(
title: context.translate(
'Failed!',
'نجاح',
),
content: context.translate(
'Password reset is not available for accounts signed in with Apple or Google.',
'لا تتوفر إمكانية إعادة تعيين كلمة المرور للحسابات التي تم تسجيل الدخول إليها باستخدام Apple أو Google.',
),
);
}
context.simpleDialog(
title: context.translate(
'Success!',
'نجاح',
),
content: context.translate(
'An email has been sent to $email with further details.',
'تم إرسال بريد إلكتروني إلى $email يتضمن المزيد من التفاصيل.',
),
);
}, },
style: TextButton.styleFrom( style: TextButton.styleFrom(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
@ -892,7 +981,7 @@ class LoginRoute extends HookConsumerWidget {
), ),
), ),
padding: const WidgetStatePropertyAll( padding: const WidgetStatePropertyAll(
EdgeInsets.symmetric(vertical: 10.5), EdgeInsets.symmetric(vertical: 16.5),
), ),
textStyle: WidgetStatePropertyAll( textStyle: WidgetStatePropertyAll(
TextStyle( TextStyle(
@ -901,7 +990,7 @@ class LoginRoute extends HookConsumerWidget {
'NotoKufi', 'NotoKufi',
), ),
fontSize: locale?.languageCode == 'ar' ? 14 : 16, fontSize: locale?.languageCode == 'ar' ? 14 : 16,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w500,
), ),
), ),
backgroundColor: WidgetStatePropertyAll( backgroundColor: WidgetStatePropertyAll(
@ -929,15 +1018,15 @@ class LoginRoute extends HookConsumerWidget {
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
fontSize: locale?.languageCode == 'ar' ? 12 : 18, fontSize: locale?.languageCode == 'ar' ? 12 : 16,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: isDarkTheme ? Color(0xFF000000) : null, color: isDarkTheme ? Colors.white : Colors.white,
), ),
), ),
6.horizontalSpace, 6.horizontalSpace,
Icon( Icon(
Icons.chevron_right_outlined, Icons.chevron_right_outlined,
color: isDarkTheme ? Color(0xFF000000) : Colors.white, // Set your desired color here color: isDarkTheme ? Colors.white : Colors.white, // Set your desired color here
) )
], ],
), ),
@ -995,7 +1084,7 @@ class LoginRoute extends HookConsumerWidget {
controller: pwCtl, controller: pwCtl,
isObscurable: true, isObscurable: true,
), ),
// 6.verticalSpace, 6.verticalSpace,
Padding( Padding(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
child: Align( child: Align(
@ -1003,7 +1092,7 @@ class LoginRoute extends HookConsumerWidget {
child: forgotPwBtn, child: forgotPwBtn,
), ),
), ),
10.verticalSpace, 11.verticalSpace,
loginBtn, loginBtn,
], ],
), ),
@ -1146,14 +1235,14 @@ class LoginRoute extends HookConsumerWidget {
width: double.infinity, width: double.infinity,
child: OutlinedButton( child: OutlinedButton(
onPressed: () async { onPressed: () async {
googleLogin(context,ref,'google'); oAuthGoogleAndAppleLogin(context,ref,'google');
}, },
style: OutlinedButton.styleFrom( style: OutlinedButton.styleFrom(
side: const BorderSide(color: Color(0xFF000000)), side: const BorderSide(color: Color(0xFF000000)),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
padding: const EdgeInsets.symmetric(vertical: 12), padding: const EdgeInsets.symmetric(vertical: 16.5),
backgroundColor: Colors.white, backgroundColor: Colors.white,
foregroundColor: Colors.black, foregroundColor: Colors.black,
textStyle: TextStyle( textStyle: TextStyle(
@ -1186,14 +1275,14 @@ class LoginRoute extends HookConsumerWidget {
width: double.infinity, width: double.infinity,
child: OutlinedButton( child: OutlinedButton(
onPressed: () async { onPressed: () async {
googleLogin(context,ref,'apple'); oAuthGoogleAndAppleLogin(context,ref,'apple');
}, },
style: OutlinedButton.styleFrom( style: OutlinedButton.styleFrom(
side: const BorderSide(color: Color(0xFF000000)), side: const BorderSide(color: Color(0xFF000000)),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
padding: const EdgeInsets.symmetric(vertical: 12), padding: const EdgeInsets.symmetric(vertical: 16.5),
backgroundColor: Colors.white, backgroundColor: Colors.white,
foregroundColor: Colors.black, foregroundColor: Colors.black,
textStyle: TextStyle( textStyle: TextStyle(
@ -1231,7 +1320,7 @@ class LoginRoute extends HookConsumerWidget {
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
padding: const EdgeInsets.symmetric(vertical: 12), padding: const EdgeInsets.symmetric(vertical: 16.5),
backgroundColor: Colors.white, backgroundColor: Colors.white,
foregroundColor: Colors.black, foregroundColor: Colors.black,
textStyle: TextStyle( textStyle: TextStyle(
@ -1260,11 +1349,14 @@ class LoginRoute extends HookConsumerWidget {
), ),
), ),
); );
final fcscBanner = Image.asset( final fcscBanner = Padding(
isDarkTheme padding: const EdgeInsets.symmetric(horizontal: 50),
? BannerAssetPath.fcscLogoDark child: Image.asset(
: BannerAssetPath.fcscLogoLight, isDarkTheme
height: 40, ? BannerAssetPath.fcscLogoDark
: BannerAssetPath.fcscLogoLight,
height: 30,
),
); );
final screenWidth = MediaQuery.of(context).size.width; final screenWidth = MediaQuery.of(context).size.width;
final listViewHorizontalPadding = final listViewHorizontalPadding =
@ -1283,8 +1375,16 @@ class LoginRoute extends HookConsumerWidget {
isOn: locale?.languageCode == 'en', isOn: locale?.languageCode == 'en',
knobTextWhenOn: 'ع', knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN', knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300, pathColorWhenOn: Color(0xFFD9D9D9),
pathColorWhenOff: Colors.grey.shade300, pathColorWhenOff: Color(0xFFD9D9D9),
knobTextStyleWhenOn: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
knobTextStyleWhenOff: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
onTap: () { onTap: () {
final formState = formKey.currentState; final formState = formKey.currentState;
ref.read(localeProvider.notifier).toggleLocale(); ref.read(localeProvider.notifier).toggleLocale();
@ -1297,7 +1397,7 @@ class LoginRoute extends HookConsumerWidget {
}, },
), ),
), ),
34.verticalSpace, 20.verticalSpace,
helloAndPleaseLoginTexts, helloAndPleaseLoginTexts,
40.verticalSpace, 40.verticalSpace,
form, form,

View File

@ -174,6 +174,7 @@ import 'package:uae_stat/config/theme/theme_provider.dart';
import 'package:uae_stat/config/toggle_lang_service.dart'; import 'package:uae_stat/config/toggle_lang_service.dart';
import 'package:uae_stat/domain/use_cases/language.dart'; import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart'; import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
import 'package:uae_stat/infrastructure/services/img_asset_paths/logo_asset_path.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
import 'package:uae_stat/presentation/Screens/app_tour/Target_content.dart'; import 'package:uae_stat/presentation/Screens/app_tour/Target_content.dart';
@ -200,7 +201,7 @@ class _MyHomePageState extends ConsumerState<MyHomePage> {
context.go('/login'); // Redirect to login after logout context.go('/login'); // Redirect to login after logout
} }
void _showExitConfirmation(BuildContext context) { void _showExitConfirmation(BuildContext context,isDarkTheme) {
double myheight = MediaQuery.of(context).size.height; double myheight = MediaQuery.of(context).size.height;
showDialog( showDialog(
context: context, context: context,
@ -209,11 +210,12 @@ class _MyHomePageState extends ConsumerState<MyHomePage> {
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5.0), // Rounded corners borderRadius: BorderRadius.circular(5.0), // Rounded corners
), ),
backgroundColor: isDarkTheme ? Colors.black : Colors.white,
contentPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero,
title: Text( title: Text(
context.translate('Log Out Confirmation', 'تأكيد تسجيل الخروج'), context.translate('Log Out Confirmation', 'تأكيد تسجيل الخروج'),
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold, fontFamily: context.translate( style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold, color: isDarkTheme ? Colors.white : Colors.black, fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
),), ),),
@ -249,7 +251,7 @@ class _MyHomePageState extends ConsumerState<MyHomePage> {
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(10.0),
), ),
side: BorderSide( side: BorderSide(
color: Color(0xFFAA8E83), // Border color color: Color(0xFFB68A34), // Border color
width: 1, width: 1,
), ),
), ),
@ -260,7 +262,7 @@ class _MyHomePageState extends ConsumerState<MyHomePage> {
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
color: Color(0xFFAA8E83), color: Color(0xFFB68A34),
fontSize: 16, fontSize: 16,
), ),
), ),
@ -272,7 +274,7 @@ class _MyHomePageState extends ConsumerState<MyHomePage> {
child: TextButton( child: TextButton(
onPressed: () => logout(context), onPressed: () => logout(context),
style: TextButton.styleFrom( style: TextButton.styleFrom(
backgroundColor: Color(0xFFAA8E83), // Background color backgroundColor: Color(0xFFB68A34), // Background color
foregroundColor: Colors.white, foregroundColor: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(10.0),
@ -344,18 +346,23 @@ class _MyHomePageState extends ConsumerState<MyHomePage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
double myheight = MediaQuery.of(context).size.height; double myheight = MediaQuery.of(context).size.height;
double mywidth = MediaQuery.of(context).size.width; double mywidth = MediaQuery.of(context).size.width;
final isDarkTheme = ref.watch(themeProvider) == ThemeMode.dark ||
(ref.watch(themeProvider) == ThemeMode.system &&
MediaQuery.of(context).platformBrightness == Brightness.dark);
return PopScope( return PopScope(
canPop: false, // Allow back navigation only if not login screen canPop: false, // Allow back navigation only if not login screen
onPopInvokedWithResult: (didPop, result) { onPopInvokedWithResult: (didPop, result) {
if (didPop) return; if (didPop) return;
_showExitConfirmation(context); // Show exit confirmation dialog _showExitConfirmation(context,isDarkTheme); // Show exit confirmation dialog
}, },
child: BaseScaffold( child: BaseScaffold(
title: Center( title: Center(
child: SizedBox( child: SizedBox(
height: myheight / 5, height: myheight / 5,
width: mywidth / 3, width: mywidth / 3,
child: Image(image: AssetImage('assets/logos/uae_stat.png')))), child: Image(image: AssetImage(isDarkTheme ? LogoAssetPath.uaeStatDark : LogoAssetPath.uaeStatLight)))),
body: EconomyStatsWidget(), body: EconomyStatsWidget(),
), ),
); );
@ -1335,6 +1342,7 @@ class EconomyStatsState extends ConsumerState<EconomyStatsWidget> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SizedBox(height: 10),
RoundedCornerContainer( RoundedCornerContainer(
key: mainTopic['main_topic'] == firstMainTopic key: mainTopic['main_topic'] == firstMainTopic
? cardTopicKey ? cardTopicKey
@ -1596,7 +1604,7 @@ class InfoCard extends StatelessWidget {
child: Container( child: Container(
height: myheight / 10.9, height: myheight / 10.9,
width: mywidth / 4, width: mywidth / 5,
margin: const EdgeInsets.symmetric(horizontal: 8), margin: const EdgeInsets.symmetric(horizontal: 8),
// padding: const EdgeInsets.all(10), // padding: const EdgeInsets.all(10),

View File

@ -289,10 +289,11 @@ class _VersionToggle extends HookConsumerWidget {
), ),
), ),
), ),
MyToggle( // MyToggle(
isOn: version.toBool(), // isOn: version.toBool(),
onTap: null, // onTap: null,
), //
// ),
DefaultTextStyleTransition( DefaultTextStyleTransition(
style: styleTween.animate( style: styleTween.animate(
Animation.fromValueListenable( Animation.fromValueListenable(

View File

@ -551,65 +551,68 @@ class _BookMarkState extends ConsumerState<BookMark> {
child: selectedTabIndex == 0 child: selectedTabIndex == 0
? (bookmarks.isNotEmpty ? (bookmarks.isNotEmpty
? SingleChildScrollView( ? SingleChildScrollView(
child: Column( child: Container(
children: List.generate( padding: const EdgeInsets.all(13.0),
transformedList.length, (i) { child: Column(
final mainTopic = transformedList[i]; children: List.generate(
print('oustside1 $mainTopic'); transformedList.length, (i) {
final list = final mainTopic = transformedList[i];
List.from(mainTopic['SubTopic'] ?? []); print('oustside1 $mainTopic');
print('oustside2 $list'); final list = List.from(
return CustomExpandableTile( mainTopic['SubTopic'] ?? []);
index: i, print('oustside2 $list');
isExpanded: expandedIndex == i, return CustomExpandableTile(
onTap: (int index) { index: i,
// 🔹 Expecting an index isExpanded: expandedIndex == i,
setState(() { onTap: (int index) {
expandedIndex = // 🔹 Expecting an index
(expandedIndex == index) setState(() {
? null expandedIndex =
: index; (expandedIndex == index)
}); ? null
}, : index;
title: });
mainTopic['main_topic'] ?? 'No Topic', },
childWidget: Container( title: mainTopic['main_topic'] ??
decoration: BoxDecoration( 'No Topic',
color: isDarkTheme childWidget: Container(
? Color(0xFF111111) decoration: BoxDecoration(
: Colors.white, color: isDarkTheme
// borderRadius: BorderRadius.all(Radius.circular(20)) ? Color(0xFF111111)
), : Colors.white,
padding: const EdgeInsets.all(16), // borderRadius: BorderRadius.all(Radius.circular(20))
child: GridView.builder( ),
shrinkWrap: true, padding: const EdgeInsets.all(16),
physics: child: GridView.builder(
NeverScrollableScrollPhysics(), shrinkWrap: true,
gridDelegate: physics:
const SliverGridDelegateWithFixedCrossAxisCount( NeverScrollableScrollPhysics(),
crossAxisCount: 2, gridDelegate:
crossAxisSpacing: 10.0, const SliverGridDelegateWithFixedCrossAxisCount(
mainAxisSpacing: 10.0, crossAxisCount: 2,
mainAxisExtent: 100, crossAxisSpacing: 10.0,
mainAxisSpacing: 10.0,
mainAxisExtent: 100,
),
itemCount: list.length,
itemBuilder: (context, index) {
return _buildBoxes(
mainTopic['SubTopic'][index],
context,
mainTopic['valueColor'],
isDarkTheme);
},
), ),
itemCount: list.length,
itemBuilder: (context, index) {
return _buildBoxes(
mainTopic['SubTopic'][index],
context,
mainTopic['valueColor'],
isDarkTheme);
},
), ),
), filteredBookmarks: List.from(
filteredBookmarks: List.from( mainTopic['SubTopic'] ?? []),
mainTopic['SubTopic'] ?? []), titleBackgroundColor:
titleBackgroundColor: mainTopic['valueColor'],
mainTopic['valueColor'], // Ensure it's a new list
// Ensure it's a new list isDarkTheme: isDarkTheme,
isDarkTheme: isDarkTheme, );
); }),
}), ),
), ),
) )
: Center( : Center(
@ -658,66 +661,69 @@ class _BookMarkState extends ConsumerState<BookMark> {
) )
: Padding( : Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Column( child: Container(
children: [ margin: const EdgeInsets.all(13.0),
Container( child: Column(
decoration: BoxDecoration( children: [
color: tabs[selectedTabIndex] Container(
['color'], decoration: BoxDecoration(
borderRadius: BorderRadius.only( color: tabs[selectedTabIndex]
topLeft: Radius.circular(20), ['color'],
topRight: Radius.circular(20)) borderRadius: BorderRadius.only(
topLeft: Radius.circular(20),
topRight: Radius.circular(20))
// borderRadius: BorderRadius.all( // borderRadius: BorderRadius.all(
// Radius.circular(35)) // Radius.circular(35))
),
padding: const EdgeInsets.only(
left: 16,
bottom: 5,
top: 5,
right: 10),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
tabs[selectedTabIndex]['title'],
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Colors.white,
fontWeight: FontWeight.w600,
fontSize: 20,
),
),
],
),
),
SizedBox(
height: 20,
),
Expanded(
child: GridView.builder(
gridDelegate:
const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 10.0,
mainAxisSpacing: 10.0,
mainAxisExtent: 100,
), ),
itemCount: filteredBookmarks.length, padding: const EdgeInsets.only(
itemBuilder: (context, index) { left: 16,
return _buildBox( bottom: 5,
filteredBookmarks[index], top: 5,
context, right: 10),
isDarkTheme); child: Row(
}, mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
tabs[selectedTabIndex]['title'],
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Colors.white,
fontWeight: FontWeight.w600,
fontSize: 20,
),
),
],
),
), ),
), SizedBox(
], height: 20,
),
Expanded(
child: GridView.builder(
gridDelegate:
const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 10.0,
mainAxisSpacing: 10.0,
mainAxisExtent: 100,
),
itemCount: filteredBookmarks.length,
itemBuilder: (context, index) {
return _buildBox(
filteredBookmarks[index],
context,
isDarkTheme);
},
),
),
],
),
), ),
), ),
), ),

View File

@ -100,6 +100,7 @@ class _EditProfileState extends ConsumerState<EditProfile> {
dynamic recordId; dynamic recordId;
dynamic collectionId; dynamic collectionId;
dynamic role; dynamic role;
late int isOAuthLogin;
bool _isHoveringDropdown = false; bool _isHoveringDropdown = false;
bool _isHoveringPreferredLang = false; bool _isHoveringPreferredLang = false;
@ -203,6 +204,7 @@ class _EditProfileState extends ConsumerState<EditProfile> {
_usernameController.text = userDetailsResponse.data['uname'] ?? ''; _usernameController.text = userDetailsResponse.data['uname'] ?? '';
_emailController.text = userDetailsResponse.data['email'] ?? ''; _emailController.text = userDetailsResponse.data['email'] ?? '';
_fullNameController.text = userDetailsResponse.data['full_name'] ?? ''; _fullNameController.text = userDetailsResponse.data['full_name'] ?? '';
isOAuthLogin = userDetailsResponse.data['is_oauth_login'] ?? '';
// _selectedCountry = userDetailsResponse.data['country_region'] ?? ''; // _selectedCountry = userDetailsResponse.data['country_region'] ?? '';
final countryName = final countryName =
@ -1412,6 +1414,7 @@ class _EditProfileState extends ConsumerState<EditProfile> {
), ),
], ],
), ),
if(isOAuthLogin != 1)
Center( Center(
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {

View File

@ -666,14 +666,14 @@ class _FeedbackFormState extends ConsumerState<FeedbackForm>
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
color: isDarkTheme ? Colors.black : Colors.white, color: Colors.white,
), ),
), ),
6.horizontalSpace, 6.horizontalSpace,
Icon( Icon(
Icons.chevron_right_outlined, Icons.chevron_right_outlined,
// color: Colors.white, // color: Colors.white,
color: isDarkTheme ? Colors.black : Colors.white, color: Colors.white,
), ),
], ],
), ),
@ -1231,8 +1231,16 @@ class LangToggle extends ConsumerWidget {
}, },
knobTextWhenOn: 'ع', knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN', knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300, pathColorWhenOn: Color(0xFFD9D9D9),
pathColorWhenOff: Colors.grey.shade300, pathColorWhenOff: Color(0xFFD9D9D9),
knobTextStyleWhenOn: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
knobTextStyleWhenOff: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
); );
} }
} }

View File

@ -6,6 +6,9 @@ import 'package:intl/intl.dart';
import 'package:pocketbase/pocketbase.dart'; import 'package:pocketbase/pocketbase.dart';
import 'package:uae_stat/config/api_config.dart'; import 'package:uae_stat/config/api_config.dart';
import 'package:uae_stat/config/connectivity_provider.dart'; import 'package:uae_stat/config/connectivity_provider.dart';
import 'package:uae_stat/config/theme/app_theme.dart';
import 'package:uae_stat/config/theme/service.dart';
import 'package:uae_stat/config/theme/theme_provider.dart';
import 'package:uae_stat/config/toggle_lang_service.dart'; import 'package:uae_stat/config/toggle_lang_service.dart';
import 'package:uae_stat/domain/use_cases/language.dart'; import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart'; import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
@ -15,7 +18,7 @@ import 'package:uae_stat/presentation/components/my_bottom_nav_bar.dart';
import 'package:uae_stat/presentation/components/my_drawer.dart'; import 'package:uae_stat/presentation/components/my_drawer.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';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // import 'package:uae_stat/l10n/app_localizations.dart';
class ManageUserRouter extends ConsumerStatefulWidget { class ManageUserRouter extends ConsumerStatefulWidget {
late final Widget title; late final Widget title;
@ -59,8 +62,8 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
await _pb.admins await _pb.admins
.authWithPassword('pb@venbainfotech.com', 'pb@venbainfotech.com'); .authWithPassword('pb@venbainfotech.com', 'pb@venbainfotech.com');
final result = await _pb.collection('users').getFullList( final result = await _pb.collection('users').getFullList(
filter: 'role="user"', filter: 'role="user"',
); );
setState(() { setState(() {
userData = result.map((record) { userData = result.map((record) {
@ -106,10 +109,10 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
} }
void _sort<T>( void _sort<T>(
Comparable<T>? Function(User user) getField, Comparable<T>? Function(User user) getField,
int columnIndex, int columnIndex,
bool ascending, bool ascending,
) { ) {
setState(() { setState(() {
_sortColumnIndex = columnIndex; _sortColumnIndex = columnIndex;
_isAscending = ascending; _isAscending = ascending;
@ -158,9 +161,9 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
AppLocalizations.of(context)!.status_success, AppLocalizations.of(context)!.status_success,
style: TextStyle( style: TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
)), )),
), ),
), ),
); );
@ -172,14 +175,14 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
SnackBar( SnackBar(
content: Text( content: Text(
context.translate( context.translate(
'Error updating status: $e', '$e خطأ في تحديث الحالة: '), 'Error updating status: $e', '$e خطأ في تحديث الحالة: '),
style: TextStyle( style: TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
)), )),
)), )),
); );
} }
} }
@ -199,7 +202,7 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
borderRadius: BorderRadius.circular(5.0), // Rounded corners borderRadius: BorderRadius.circular(5.0), // Rounded corners
), ),
contentPadding: contentPadding:
EdgeInsets.zero, // Ensure no padding issues with close icon EdgeInsets.zero, // Ensure no padding issues with close icon
content: Stack( content: Stack(
children: [ children: [
Padding( Padding(
@ -230,7 +233,7 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
'NotoKufi', 'NotoKufi',
), ),
fontWeight: fontWeight:
FontWeight.bold, // Makes newStatus bold FontWeight.bold, // Makes newStatus bold
fontSize: 18, fontSize: 18,
color: Color(0xFF898C81), color: Color(0xFF898C81),
), ),
@ -299,11 +302,11 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
}, },
style: TextButton.styleFrom( style: TextButton.styleFrom(
backgroundColor: backgroundColor:
Color(0xFFAA8E83), // Set background color Color(0xFFAA8E83), // Set background color
foregroundColor: Colors.white, foregroundColor: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: borderRadius:
BorderRadius.circular(10.0), // Set text color BorderRadius.circular(10.0), // Set text color
), ),
), ),
child: Text( child: Text(
@ -336,11 +339,52 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
} }
}); });
// ref.listen<Locale?>(localeProvider, (previous, next) async {
// final localeCode = next?.languageCode ?? 'en'; // Default to 'en' if null
// await _userService.updateLanguage(localeCode);
// });
ref.listen<Locale?>(localeProvider, (previous, next) async { ref.listen<Locale?>(localeProvider, (previous, next) async {
final localeCode = next?.languageCode ?? 'en'; // Default to 'en' if null final localeCode = next?.languageCode ?? 'en'; // Default to 'en' if null
setState(() {
isLoading = true;
});
await _userService.updateLanguage(localeCode); await _userService.updateLanguage(localeCode);
final currentTheme = ref.read(themeProvider);
final isDark = currentTheme == ThemeMode.dark ||
(currentTheme == ThemeMode.system &&
MediaQuery.of(context).platformBrightness == Brightness.dark);
final themeString = isDark ? 'dark' : 'light';
fetchUnverifiedUsers();
// fetchBookmarks(localeCode, themeString);
}); });
ref.listen<ThemeMode>(themeProvider, (previous, next) async {
final localeCode = ref.watch(localeProvider)?.languageCode ?? 'en';
print(localeCode);
// Default to 'en' if null
setState(() {
isLoading = true;
print('isLoadingref $isLoading');
});
final currentTheme = ref.read(themeProvider);
final isDark = currentTheme == ThemeMode.dark ||
(currentTheme == ThemeMode.system &&
MediaQuery.of(context).platformBrightness == Brightness.dark);
final themeString = isDark ? 'dark' : 'light';
fetchUnverifiedUsers();
// fetchBookmarks(localeCode, themeString);
});
final isDarkTheme = ref.watch(themeProvider) == ThemeMode.dark ||
(ref.watch(themeProvider) == ThemeMode.system &&
MediaQuery.of(context).platformBrightness == Brightness.dark);
final Map<String, String> statusOptions = { final Map<String, String> statusOptions = {
'Approved': AppLocalizations.of(context)!.approved, 'Approved': AppLocalizations.of(context)!.approved,
'Denied': AppLocalizations.of(context)!.denied, 'Denied': AppLocalizations.of(context)!.denied,
@ -356,359 +400,321 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
context.go('/myhomepage'); // Show exit confirmation dialog context.go('/myhomepage'); // Show exit confirmation dialog
}, },
child: BaseScaffold( child: BaseScaffold(
backgroundColor: isDarkTheme ? Colors.black : Colors.white,
appbarColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
// title: Text("Manage User"), // title: Text("Manage User"),
title: Text( title: Text(
AppLocalizations.of(context)!.manage_user, AppLocalizations.of(context)!.manage_user,
style: TextStyle( style: TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
)), )),
), ),
body: isLoading body: isLoading
? Container( ? Container(
color: Color(0x98FFFCE5), // Semi-transparent background color: Color(0x98FFFCE5), // Semi-transparent background
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Container( Container(
margin: EdgeInsets.symmetric( margin: EdgeInsets.symmetric(
horizontal: 40), // Left & Right space horizontal: 40), // Left & Right space
child: LinearProgressIndicator( child: LinearProgressIndicator(
minHeight: 5, // Adjust thickness minHeight: 5, // Adjust thickness
backgroundColor: backgroundColor:
Colors.grey[100], // Optional: Background color Colors.grey[100], // Optional: Background color
valueColor: AlwaysStoppedAnimation<Color>( valueColor: AlwaysStoppedAnimation<Color>(
Color(0xFFAA8E83)), // Loader color Color(0xFFAA8E83)), // Loader color
),
),
],
), ),
) ),
],
),
)
: SingleChildScrollView( : SingleChildScrollView(
child: Padding( child: Padding(
padding: padding:
const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0), const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0),
child: Column( child: Column(
children: [ children: [
// TextField(
// decoration: InputDecoration( Container(
// prefixIcon: const Icon(Icons.search), height: 40,
// hintText: 'Search', decoration: BoxDecoration(
// border: OutlineInputBorder( color: isDarkTheme ? Color(0xFF000000) : Colors.white,
// borderRadius: BorderRadius.all(Radius.circular(20)), borderRadius: BorderRadius.circular(5.0),
// ), border: Border.all(width: 2, color: Color(0xFFA0A0A0)),
// ), ),
// onChanged: filterUsers, child: Padding(
// ), padding: EdgeInsets.only(left: 5.0),
// Container( child: TextField(
// height: 40, decoration: InputDecoration(
// decoration: BoxDecoration( hintText: AppLocalizations.of(context)!.search,
// color: Colors.white, hintStyle: TextStyle(
// borderRadius: BorderRadius.circular(30.0), color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
// border: Border.all(width: 2, color: Color(0xFFAA8E83)), fontFamily: context.translate('Roboto', 'NotoKufi'),
// ), fontSize: 18,
// child: TextField( // height: 1.8,
// decoration: InputDecoration(
// hintText: AppLocalizations.of(context)!.search,
// hintStyle: TextStyle(color: Color(0xFFC3C6CB)),
// prefixIcon: Image.asset(
// MiscIconAssetPath.search,
// width: 20,
// height: 20,
// ),
// // ,prefixIcon: Icon(
// // Icons.search,
// // color: Color(0xFFAA8E83),
// // ),
// border: InputBorder.none,
// contentPadding: EdgeInsets.symmetric(
// vertical: 15.0, horizontal: 20.0),
// ),
// onChanged: filterUsers,
// ),
// ),
Container(
height: 40,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(30.0),
border:
Border.all(width: 1, color: Color(0xFFAA8E83)),
), ),
child: Padding( prefixIconConstraints: BoxConstraints(
padding: EdgeInsets.only(left: 12.0), maxWidth: 42,
child: TextField( maxHeight: 42,
decoration: InputDecoration( ),
hintText: AppLocalizations.of(context)!.search, prefixIcon: Container(
hintStyle: TextStyle( padding: EdgeInsets.only(right: 5, left: 5),
color: Color(0xFFAA8E83), alignment: Alignment.center,
fontFamily: child: SvgPicture.asset(
context.translate('Roboto', 'NotoKufi'), MiscIconAssetPath.Search,
fontSize: 14, semanticsLabel: 'Search',
height: 2.5, // Helps with vertical alignment colorFilter: ColorFilter.mode(Color(0xFFAA8E83), BlendMode.srcIn),
), height: 18,
prefixIconConstraints: BoxConstraints( width: 18,
maxWidth: 42,
maxHeight: 42,
),
prefixIcon: Container(
alignment: Alignment.center,
padding: EdgeInsets.only(left: 10, right: 5),
child: SvgPicture.asset(
MiscIconAssetPath.Search,
semanticsLabel: 'Search',
height: 18,
width: 18,
colorFilter: ColorFilter.mode(
Color(0xFFAA8E83), BlendMode.srcIn),
),
),
contentPadding: EdgeInsets.only(
top: 14), // Aligns hint text with icon
border: InputBorder.none,
),
onChanged: filterUsers,
), ),
), ),
// contentPadding: EdgeInsets.symmetric(vertical: 12, horizontal: 18.0),
border: InputBorder.none,
), ),
SizedBox(height: myheight / 40), onChanged: filterUsers,
filteredUserData.isEmpty ),
? Center( ),
child: Padding( ),
padding: const EdgeInsets.all(16.0), SizedBox(height: myheight / 40),
child: Column( filteredUserData.isEmpty
mainAxisSize: MainAxisSize.min, ? Center(
children: [ child: Padding(
SizedBox(height: myheight / 5), padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(height: myheight / 5),
// Icon(Icons.search, // Icon(Icons.search,
// size: 60, color: Colors.grey), // size: 60, color: Colors.grey),
Image.asset( Image.asset(
MiscIconAssetPath.group, MiscIconAssetPath.group,
width: 60, width: 60,
height: 60, height: 60,
),
SizedBox(height: 15),
// Space between icon and text
Text(
AppLocalizations.of(context)!
.no_result_found,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 24,
fontWeight: FontWeight.bold,
color: Colors.grey[700],
),
),
SizedBox(height: 12), // Space between texts
FittedBox(
child: Text(
context.translate(
"We couldn't find anything matching your search.",
'لم نعثر على أي شيء يطابق بحثك.'),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 18,
color: Color(0xFF898C81)),
textAlign: TextAlign.center,
),
),
],
),
),
)
: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth: MediaQuery.of(context).size.width,
),
child: DataTable(
sortColumnIndex: _sortColumnIndex,
sortAscending: _isAscending,
columns: [
DataColumn(
label: Text(
AppLocalizations.of(context)!.user_name,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
),
onSort: (columnIndex, ascending) {
_sort(
(user) =>
user.userName.toLowerCase(),
columnIndex,
ascending);
},
),
DataColumn(
label: Text(
AppLocalizations.of(context)!.email_id,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
),
onSort: (columnIndex, ascending) {
_sort(
(user) =>
user.emailId.toLowerCase(),
columnIndex,
ascending);
},
),
DataColumn(
label: Text(
AppLocalizations.of(context)!.reg_date,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
),
onSort: (columnIndex, ascending) {
_sort(
(user) => DateFormat('dd/MM/yyyy')
.parse(user.registrationDate),
columnIndex,
ascending,
);
},
),
DataColumn(
label: Text(
AppLocalizations.of(context)!.status,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
),
onSort: (columnIndex, ascending) {
_sort(
(user) => user.status.toLowerCase(),
columnIndex,
ascending);
},
),
],
rows: filteredUserData.isEmpty
? [
DataRow(
cells: List<DataCell>.generate(
4, // Ensure it matches the number of DataColumns
(index) => DataCell(
index == 0
? Text(
AppLocalizations.of(
context)!
.no_result_found,
style: TextStyle(
fontFamily: context
.translate(
'Roboto',
'NotoKufi',
), ),
fontStyle: FontStyle
SizedBox(height: 15), .italic),
// Space between icon and text )
Text( : const Text(
AppLocalizations.of(context)! ''), // Empty cells for other columns
.no_result_found, placeholder: true,
),
),
),
]
: filteredUserData.map((user) {
return DataRow(
cells: [
DataCell(
Text(
user.userName,
style: TextStyle(
fontFamily:
context.translate(
'Roboto',
'NotoKufi',
)),
),
),
DataCell(Text(
user.emailId,
style: TextStyle(
fontFamily:
context.translate(
'Roboto',
'NotoKufi',
)),
)),
DataCell(Text(
user.registrationDate,
style: TextStyle(
fontFamily:
context.translate(
'Roboto',
'NotoKufi',
)),
)),
DataCell(
DropdownButton<String>(
value: user.status,
items: statusOptions.entries
.map((status) {
return DropdownMenuItem<
String>(
value: status.key,
child: Text(
status.value,
style: TextStyle( style: TextStyle(
fontFamily: context.translate( fontFamily:
context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
fontSize: 24, color: getStatusColor(
fontWeight: FontWeight.bold, status.key),
color: Colors.grey[700],
), ),
), ),
);
SizedBox(height: 12), // Space between texts }).toList(),
FittedBox( onChanged: (newStatus) {
child: Text( print(user);
context.translate( if (newStatus != null) {
"We couldn't find anything matching your search.", _showConfirmationDialog(
'لم نعثر على أي شيء يطابق بحثك.'), user,
style: TextStyle( newStatus,
fontFamily: context.translate( statusOptions[
'Roboto', newStatus]!,
'NotoKufi', );
), }
fontSize: 18, },
color: Color(0xFF898C81)),
textAlign: TextAlign.center,
),
),
],
),
),
)
: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth: MediaQuery.of(context).size.width,
),
child: DataTable(
sortColumnIndex: _sortColumnIndex,
sortAscending: _isAscending,
columns: [
DataColumn(
label: Text(
AppLocalizations.of(context)!.user_name,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
),
onSort: (columnIndex, ascending) {
_sort(
(user) =>
user.userName.toLowerCase(),
columnIndex,
ascending);
},
),
DataColumn(
label: Text(
AppLocalizations.of(context)!.email_id,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
),
onSort: (columnIndex, ascending) {
_sort(
(user) =>
user.emailId.toLowerCase(),
columnIndex,
ascending);
},
),
DataColumn(
label: Text(
AppLocalizations.of(context)!.reg_date,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
),
onSort: (columnIndex, ascending) {
_sort(
(user) => DateFormat('dd/MM/yyyy')
.parse(user.registrationDate),
columnIndex,
ascending,
);
},
),
DataColumn(
label: Text(
AppLocalizations.of(context)!.status,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
),
onSort: (columnIndex, ascending) {
_sort(
(user) => user.status.toLowerCase(),
columnIndex,
ascending);
},
),
],
rows: filteredUserData.isEmpty
? [
DataRow(
cells: List<DataCell>.generate(
4, // Ensure it matches the number of DataColumns
(index) => DataCell(
index == 0
? Text(
AppLocalizations.of(
context)!
.no_result_found,
style: TextStyle(
fontFamily: context
.translate(
'Roboto',
'NotoKufi',
),
fontStyle: FontStyle
.italic),
)
: const Text(
''), // Empty cells for other columns
placeholder: true,
),
),
),
]
: filteredUserData.map((user) {
return DataRow(
cells: [
DataCell(
Text(
user.userName,
style: TextStyle(
fontFamily:
context.translate(
'Roboto',
'NotoKufi',
)),
),
),
DataCell(Text(
user.emailId,
style: TextStyle(
fontFamily:
context.translate(
'Roboto',
'NotoKufi',
)),
)),
DataCell(Text(
user.registrationDate,
style: TextStyle(
fontFamily:
context.translate(
'Roboto',
'NotoKufi',
)),
)),
DataCell(
DropdownButton<String>(
value: user.status,
items: statusOptions.entries
.map((status) {
return DropdownMenuItem<
String>(
value: status.key,
child: Text(
status.value,
style: TextStyle(
fontFamily:
context.translate(
'Roboto',
'NotoKufi',
),
color: getStatusColor(
status.key),
),
),
);
}).toList(),
onChanged: (newStatus) {
print(user);
if (newStatus != null) {
_showConfirmationDialog(
user,
newStatus,
statusOptions[
newStatus]!,
);
}
},
),
),
],
);
}).toList(),
),
), ),
), ),
], ],
);
}).toList(),
),
), ),
), ),
), ],
),
),
),
), ),
); );
} }
@ -729,4 +735,4 @@ class User {
required this.registrationDate, required this.registrationDate,
this.status = 'Pending', this.status = 'Pending',
}); });
} }

View File

@ -286,6 +286,34 @@ class _NotificationPageState extends ConsumerState<NotificationPage> {
{'title': AppLocalizations.of(context)!.notificationFavourites}, {'title': AppLocalizations.of(context)!.notificationFavourites},
]; ];
// final List<Map<String, dynamic>> tabs = [
// {
// 'title': AppLocalizations.of(context)!.all_updates,
// 'color': Colors.blue,
// },
// {
// 'title': AppLocalizations.of(context)!.app_updates,
// 'color': Colors.green,
// },
// {
// 'title': AppLocalizations.of(context)!.notificationSocial,
// 'color': Color(0xFF675863),
// },
// {
// 'title': AppLocalizations.of(context)!.notificationEconomy,
// 'color': Color(0xFF89AFD8),
// },
// {
// 'title': AppLocalizations.of(context)!.notificationEnvironment,
// 'color': Color(0xFFB3CF99),
// },
// {
// 'title': AppLocalizations.of(context)!.notificationFavourites,
// 'color': Colors.red,
// },
// ];
// Filter notifications based on the selected tab // Filter notifications based on the selected tab
List<Map<String, dynamic>> filteredNotifications = selectedTabIndex == 0 List<Map<String, dynamic>> filteredNotifications = selectedTabIndex == 0
? notifications ? notifications
@ -423,7 +451,7 @@ class TabBarHeader extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
color: isDarkTheme ? Color(0xFF111111) : Colors.grey[200], color: isDarkTheme ? Color(0xFF111111) : Colors.white,
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.symmetric(vertical: 8),
child: SingleChildScrollView( child: SingleChildScrollView(
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
@ -440,8 +468,8 @@ class TabBarHeader extends StatelessWidget {
foregroundColor: foregroundColor:
MaterialStateProperty.resolveWith((states) { MaterialStateProperty.resolveWith((states) {
return selectedIndex == index return selectedIndex == index
? Color(0xFF985400) ? isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFFB68A34)
: Colors.grey[700]; : isDarkTheme ? Color(0xFFBBBBBB) : Color(0xFF898C81);
}), }),
), ),
child: Text( child: Text(

View File

@ -179,7 +179,7 @@ class _GetStartedState extends ConsumerState<GetStarted> {
), ),
), ),
), ),
SizedBox(height: 10), // SizedBox(height: 10),
// SizedBox( // SizedBox(
// width: MediaQuery.of(context).size.width, // width: MediaQuery.of(context).size.width,
// height: MediaQuery.of(context).size.height * 0.36, // height: MediaQuery.of(context).size.height * 0.36,
@ -188,51 +188,53 @@ class _GetStartedState extends ConsumerState<GetStarted> {
// fit: BoxFit.contain, // fit: BoxFit.contain,
// ), // ),
// ), // ),
Padding(padding: const EdgeInsets.all(30.0), Padding(
child: Column( padding: const EdgeInsets.all(30.0),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Text( children: [
context.translate( Text(
'1. Download the app from the App Store or Google Play Store.', context.translate(
'1 .قم بتحميل التطبيق من متجر التطبيقات (Appstore) أو متجر جوجل بلاي (Google Play)..', '1. Download the app from the App Store or Google Play Store.',
'1 .قم بتحميل التطبيق من متجر التطبيقات (Appstore) أو متجر جوجل بلاي (Google Play)..',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme ? Colors.white : Colors.black54,
),
), ),
textAlign: TextAlign.justify, // Align the text SizedBox(
softWrap: true, height: 20,
style: TextStyle(
color: isDarkTheme ? Colors.white : Colors.black54,
), ),
), Text(
SizedBox( context.translate(
height: 20, '2. Log in to unlock advanced features or continue as a guest.',
), '2 .قم بتسجيل الدخول لفتح الميزات المتقدمة أو الاستمرار كضيف.',
Text( ),
context.translate( textAlign: TextAlign.justify, // Align the text
'2. Log in to unlock advanced features or continue as a guest.', softWrap: true,
'2 .قم بتسجيل الدخول لفتح الميزات المتقدمة أو الاستمرار كضيف.', style: TextStyle(
color: isDarkTheme ? Colors.white : Colors.black54,
),
), ),
textAlign: TextAlign.justify, // Align the text SizedBox(
softWrap: true, height: 20,
style: TextStyle(
color: isDarkTheme ? Colors.white : Colors.black54,
), ),
), Text(
SizedBox( context.translate(
height: 20, '3. Navigate through categories, explore metrics, and bookmark essential information.',
), '3 .تنقل عبر الفئات، واستكشف المقاييس، وقم بإضافة إشارة مرجعية إلى المعلومات الأساسية.',
Text( ),
context.translate( textAlign: TextAlign.justify, // Align the text
'3. Navigate through categories, explore metrics, and bookmark essential information.', softWrap: true,
'3 .تنقل عبر الفئات، واستكشف المقاييس، وقم بإضافة إشارة مرجعية إلى المعلومات الأساسية.', style: TextStyle(
color: isDarkTheme ? Colors.white : Colors.black54,
),
), ),
textAlign: TextAlign.justify, // Align the text ],
softWrap: true, ),
style: TextStyle( )
color: isDarkTheme ? Colors.white : Colors.black54,
),
),
],
),)
// SizedBox( // SizedBox(
// height: MediaQuery.of(context).size.height * 0.12, // height: MediaQuery.of(context).size.height * 0.12,
// ), // ),

View File

@ -13,7 +13,6 @@ import 'package:uae_stat/presentation/components/indicators/locale_provider.dart
import '../../../../../../infrastructure/services/img_asset_paths/banner_asset_path.dart'; import '../../../../../../infrastructure/services/img_asset_paths/banner_asset_path.dart';
import '../../../custom_drawer_routes.dart'; import '../../../custom_drawer_routes.dart';
class AppFeatures extends ConsumerStatefulWidget { class AppFeatures extends ConsumerStatefulWidget {
const AppFeatures({super.key}); const AppFeatures({super.key});
@ -176,7 +175,7 @@ class _AppFeaturesState extends ConsumerState<AppFeatures> {
), ),
), ),
), ),
SizedBox(height: 20,), // SizedBox(height: 20,),
// SizedBox( // SizedBox(
// width: MediaQuery.of(context).size.width, // width: MediaQuery.of(context).size.width,
// height: MediaQuery.of(context).size.height * 0.36, // height: MediaQuery.of(context).size.height * 0.36,
@ -185,376 +184,391 @@ class _AppFeaturesState extends ConsumerState<AppFeatures> {
// fit: BoxFit.contain, // fit: BoxFit.contain,
// ), // ),
// ), // ),
Padding(padding: const EdgeInsets.all(30.0), Padding(
child: Column( padding: const EdgeInsets.all(30.0),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Text( children: [
context.translate('1. Comprehensive Statistics:', Text(
'1. رؤى مستندة إلى البيانات '), context.translate('1. Comprehensive Statistics:',
style: TextStyle( '1. رؤى مستندة إلى البيانات '),
fontFamily: context.translate( style: TextStyle(
'Roboto', fontFamily: context.translate(
'NotoKufi', 'Roboto',
), 'NotoKufi',
fontSize: 16, ),
color: isDarkTheme ? Colors.white : Color(0xFF414042), fontSize: 16,
fontWeight: FontWeight.w600, color: isDarkTheme ? Colors.white : Color(0xFF414042),
), fontWeight: FontWeight.w600,
), ),
SizedBox(height: 8), ),
Padding( SizedBox(height: 8),
padding: const EdgeInsets.only(left: 7.0), Padding(
child: Column( padding: const EdgeInsets.only(left: 7.0),
children: [ child: Column(
Row( children: [
crossAxisAlignment: CrossAxisAlignment.start, Row(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Padding( children: [
padding: const EdgeInsets.only(top: 6.0), Padding(
child: Icon( padding: const EdgeInsets.only(top: 6.0),
Icons.brightness_1, child: Icon(
size: 5, Icons.brightness_1,
color: isDarkTheme ? Colors.white : Colors.black, size: 5,
), color: isDarkTheme
), // Bullet point ? Colors.white
SizedBox(width: 8), // Space between bullet and text : Colors.black,
Expanded( ),
child: RichText( ), // Bullet point
text: TextSpan( SizedBox(
text: context.translate( width: 8), // Space between bullet and text
'Access detailed datasets across categories such as ', Expanded(
'الوصول إلى مجموعات بيانات تفصيلية عبر فئات مثل الاقتصاد، البيئة، الاجتماعية، وغيرها.', child: RichText(
), text: TextSpan(
style: TextStyle( text: context.translate(
color: isDarkTheme 'Access detailed datasets across categories such as ',
? Colors.white 'الوصول إلى مجموعات بيانات تفصيلية عبر فئات مثل الاقتصاد، البيئة، الاجتماعية، وغيرها.',
: Color(0xFF898C81), ),
fontSize: 16, style: TextStyle(
fontFamily: context.translate( color: isDarkTheme
'Roboto', ? Colors.white
'NotoKufi', : Color(0xFF898C81),
), fontSize: 16,
), fontFamily: context.translate(
children: <TextSpan>[ 'Roboto',
TextSpan( 'NotoKufi',
text: context.translate( ),
'Economy, Environment, Social, ', ''), ),
style: TextStyle( children: <TextSpan>[
fontWeight: FontWeight.bold, TextSpan(
color: isDarkTheme text: context.translate(
? Colors.white 'Economy, Environment, Social, ',
: Color(0xFF414042), ''),
fontFamily: context.translate( style: TextStyle(
'Roboto', fontWeight: FontWeight.bold,
'NotoKufi', color: isDarkTheme
), ? Colors.white
), : Color(0xFF414042),
), fontFamily: context.translate(
TextSpan( 'Roboto',
text: context.translate('and more.', ''), 'NotoKufi',
style: TextStyle( ),
color: isDarkTheme ),
? Colors.white ),
: Color(0xFF898C81), TextSpan(
fontSize: 16, text: context.translate(
fontFamily: context.translate( 'and more.', ''),
'Roboto', style: TextStyle(
'NotoKufi', color: isDarkTheme
), ? Colors.white
), : Color(0xFF898C81),
), fontSize: 16,
], fontFamily: context.translate(
), 'Roboto',
), 'NotoKufi',
), ),
], ),
), ),
Row( ],
crossAxisAlignment: CrossAxisAlignment.start, ),
children: [ ),
Padding( ),
padding: const EdgeInsets.only(top: 8.0), ],
child: Icon( ),
Icons.brightness_1, Row(
size: 5, crossAxisAlignment: CrossAxisAlignment.start,
color: isDarkTheme children: [
? Colors.white Padding(
: Color(0xFF414042), padding: const EdgeInsets.only(top: 8.0),
), child: Icon(
), // Bullet point Icons.brightness_1,
SizedBox(width: 8), // Space between bullet and text size: 5,
Expanded( color: isDarkTheme
child: Text( ? Colors.white
context.translate( : Color(0xFF414042),
'Explore statistics presented as smart metrics, graphs, and charts for better understanding.', ),
'استكشاف الإحصائيات المقدمة على هيئة مقاييس ذكية ورسوم بيانية ومخططات لتعزيز الفهم.', ), // Bullet point
), SizedBox(
textAlign: TextAlign.justify, // Align the text width: 8), // Space between bullet and text
softWrap: true, Expanded(
style: TextStyle( child: Text(
color: isDarkTheme context.translate(
? Colors.white 'Explore statistics presented as smart metrics, graphs, and charts for better understanding.',
: Color(0xFF898C81), 'استكشاف الإحصائيات المقدمة على هيئة مقاييس ذكية ورسوم بيانية ومخططات لتعزيز الفهم.',
), ),
), textAlign:
), TextAlign.justify, // Align the text
], softWrap: true,
), style: TextStyle(
], color: isDarkTheme
), ? Colors.white
), : Color(0xFF898C81),
SizedBox(height: 30), ),
Text( ),
context.translate( ),
'2. Drilldown Navigation:', '2. التنقل التفصيلي'), ],
style: TextStyle( ),
fontFamily: context.translate( ],
'Roboto', ),
'NotoKufi', ),
), SizedBox(height: 30),
fontSize: 16, Text(
color: isDarkTheme ? Colors.white : Color(0xFF414042), context.translate(
fontWeight: FontWeight.w600, '2. Drilldown Navigation:', '2. التنقل التفصيلي'),
), style: TextStyle(
), fontFamily: context.translate(
SizedBox(height: 8), 'Roboto',
Padding( 'NotoKufi',
padding: const EdgeInsets.only(left: 7.0), ),
child: Column( fontSize: 16,
children: [ color: isDarkTheme ? Colors.white : Color(0xFF414042),
Row( fontWeight: FontWeight.w600,
crossAxisAlignment: CrossAxisAlignment.start, ),
children: [ ),
Padding( SizedBox(height: 8),
padding: const EdgeInsets.only(top: 8.0), Padding(
child: Icon( padding: const EdgeInsets.only(left: 7.0),
Icons.brightness_1, child: Column(
size: 5, children: [
color: isDarkTheme Row(
? Colors.white crossAxisAlignment: CrossAxisAlignment.start,
: Color(0xFF414042), children: [
), Padding(
), // Bullet point padding: const EdgeInsets.only(top: 8.0),
SizedBox(width: 8), // Space between bullet and text child: Icon(
Expanded( Icons.brightness_1,
child: Text( size: 5,
context.translate( color: isDarkTheme
'Start with high-level categories and drill down to specific KPIs and metrics for deeper insights.', ? Colors.white
'البدء بالفئات العامة والتنقل وصولًا إلى مؤشرات الأداء الرئيسية (KPIs) والمقاييس المحددة للحصول على رؤى أعمق.', : Color(0xFF414042),
), ),
textAlign: TextAlign.justify, // Align the text ), // Bullet point
softWrap: true, SizedBox(
style: TextStyle( width: 8), // Space between bullet and text
color: isDarkTheme Expanded(
? Colors.white child: Text(
: Color(0xFF898C81), context.translate(
), 'Start with high-level categories and drill down to specific KPIs and metrics for deeper insights.',
), 'البدء بالفئات العامة والتنقل وصولًا إلى مؤشرات الأداء الرئيسية (KPIs) والمقاييس المحددة للحصول على رؤى أعمق.',
), ),
], textAlign:
), TextAlign.justify, // Align the text
], softWrap: true,
), style: TextStyle(
), color: isDarkTheme
SizedBox(height: 30), ? Colors.white
Text( : Color(0xFF898C81),
context.translate('3. Interactive Visualizations:', ),
'3. التصورات التفاعلية:'), ),
style: TextStyle( ),
fontFamily: context.translate( ],
'Roboto', ),
'NotoKufi', ],
), ),
fontSize: 16, ),
color: isDarkTheme ? Colors.white : Color(0xFF414042), SizedBox(height: 30),
fontWeight: FontWeight.w600, Text(
), context.translate('3. Interactive Visualizations:',
), '3. التصورات التفاعلية:'),
SizedBox(height: 8), style: TextStyle(
Padding( fontFamily: context.translate(
padding: const EdgeInsets.only(left: 7.0), 'Roboto',
child: Column( 'NotoKufi',
children: [ ),
Row( fontSize: 16,
crossAxisAlignment: CrossAxisAlignment.start, color: isDarkTheme ? Colors.white : Color(0xFF414042),
children: [ fontWeight: FontWeight.w600,
Padding( ),
padding: const EdgeInsets.only(top: 8.0), ),
child: Icon( SizedBox(height: 8),
Icons.brightness_1, Padding(
size: 5, padding: const EdgeInsets.only(left: 7.0),
color: isDarkTheme child: Column(
? Colors.white children: [
: Color(0xFF414042), Row(
), crossAxisAlignment: CrossAxisAlignment.start,
), // Bullet point children: [
SizedBox(width: 8), // Space between bullet and text Padding(
Expanded( padding: const EdgeInsets.only(top: 8.0),
child: Text( child: Icon(
context.translate( Icons.brightness_1,
'View trends and relationships with interactive graphs and charts, including bar graphs, line charts, and more.', size: 5,
'عرض الاتجاهات والعلاقات باستخدام الرسوم البيانية التفاعلية مثل المخططات الشريطية، المخططات الخطية، وغيرها.', color: isDarkTheme
), ? Colors.white
textAlign: TextAlign.justify, // Align the text : Color(0xFF414042),
softWrap: true, ),
style: TextStyle( ), // Bullet point
color: isDarkTheme SizedBox(
? Colors.white width: 8), // Space between bullet and text
: Color(0xFF898C81), Expanded(
), child: Text(
), context.translate(
), 'View trends and relationships with interactive graphs and charts, including bar graphs, line charts, and more.',
], 'عرض الاتجاهات والعلاقات باستخدام الرسوم البيانية التفاعلية مثل المخططات الشريطية، المخططات الخطية، وغيرها.',
), ),
], textAlign:
), TextAlign.justify, // Align the text
), softWrap: true,
SizedBox( style: TextStyle(
height: 30, color: isDarkTheme
), ? Colors.white
Text( : Color(0xFF898C81),
context.translate('4. Secure User Access:', ),
'4. الوصول الآمن للمستخدم:'), ),
style: TextStyle( ),
fontFamily: context.translate( ],
'Roboto', ),
'NotoKufi', ],
), ),
fontSize: 16, ),
color: isDarkTheme ? Colors.white : Color(0xFF414042), SizedBox(
fontWeight: FontWeight.w600, height: 30,
), ),
), Text(
SizedBox(height: 8), context.translate('4. Secure User Access:',
Padding( '4. الوصول الآمن للمستخدم:'),
padding: const EdgeInsets.only(left: 7.0), style: TextStyle(
child: Column( fontFamily: context.translate(
children: [ 'Roboto',
Row( 'NotoKufi',
crossAxisAlignment: CrossAxisAlignment.start, ),
children: [ fontSize: 16,
Padding( color: isDarkTheme ? Colors.white : Color(0xFF414042),
padding: const EdgeInsets.only(top: 8.0), fontWeight: FontWeight.w600,
child: Icon( ),
Icons.brightness_1, ),
size: 5, SizedBox(height: 8),
color: isDarkTheme Padding(
? Colors.white padding: const EdgeInsets.only(left: 7.0),
: Color(0xFF414042), child: Column(
), children: [
), // Bullet point Row(
SizedBox(width: 8), crossAxisAlignment: CrossAxisAlignment.start,
Expanded( children: [
child: Text( Padding(
context.translate( padding: const EdgeInsets.only(top: 8.0),
'Available only to registered users whose accounts have been approved by an admin.', child: Icon(
'متاح فقط للمستخدمين المسجلين الذين تمت الموافقة على حساباتهم من قبل المسؤول.', Icons.brightness_1,
), size: 5,
textAlign: TextAlign.justify, // Align the text color: isDarkTheme
softWrap: true, ? Colors.white
style: TextStyle( : Color(0xFF414042),
color: isDarkTheme ),
? Colors.white ), // Bullet point
: Color(0xFF898C81), SizedBox(width: 8),
), Expanded(
), child: Text(
), // Space between bullet and text context.translate(
'Available only to registered users whose accounts have been approved by an admin.',
'متاح فقط للمستخدمين المسجلين الذين تمت الموافقة على حساباتهم من قبل المسؤول.',
], ),
), textAlign:
Row( TextAlign.justify, // Align the text
crossAxisAlignment: CrossAxisAlignment.start, softWrap: true,
children: [ style: TextStyle(
Padding( color: isDarkTheme
padding: const EdgeInsets.only(top: 8.0), ? Colors.white
child: Icon( : Color(0xFF898C81),
Icons.brightness_1, ),
size: 5, ),
color: isDarkTheme ), // Space between bullet and text
? Colors.white ],
: Color(0xFF414042), ),
), Row(
), // Bullet point crossAxisAlignment: CrossAxisAlignment.start,
SizedBox(width: 8), // Space between bullet and text children: [
Expanded( Padding(
child: Text( padding: const EdgeInsets.only(top: 8.0),
context.translate( child: Icon(
'Login ensures secure access to sensitive statistical information.', Icons.brightness_1,
'يضمن تسجيل الدخول الوصول الآمن إلى المعلومات الإحصائية الحساسة.', size: 5,
), color: isDarkTheme
textAlign: TextAlign.justify, // Align the text ? Colors.white
softWrap: true, : Color(0xFF414042),
style: TextStyle( ),
color: isDarkTheme ), // Bullet point
? Colors.white SizedBox(
: Color(0xFF898C81), width: 8), // Space between bullet and text
), Expanded(
), child: Text(
), context.translate(
], 'Login ensures secure access to sensitive statistical information.',
), 'يضمن تسجيل الدخول الوصول الآمن إلى المعلومات الإحصائية الحساسة.',
], ),
), textAlign:
), TextAlign.justify, // Align the text
SizedBox( softWrap: true,
height: 30, style: TextStyle(
), color: isDarkTheme
Text( ? Colors.white
context.translate('5. Profile Customization:', : Color(0xFF898C81),
'5. تخصيص الملف الشخصي:'), ),
style: TextStyle( ),
fontFamily: context.translate( ),
'Roboto', ],
'NotoKufi', ),
), ],
fontSize: 16, ),
color: isDarkTheme ? Colors.white : Color(0xFF414042), ),
fontWeight: FontWeight.w600, SizedBox(
), height: 30,
), ),
SizedBox(height: 8), Text(
Padding( context.translate('5. Profile Customization:',
padding: const EdgeInsets.only(left: 7.0), '5. تخصيص الملف الشخصي:'),
child: Column( style: TextStyle(
children: [ fontFamily: context.translate(
Row( 'Roboto',
crossAxisAlignment: CrossAxisAlignment.start, 'NotoKufi',
children: [ ),
Padding( fontSize: 16,
padding: const EdgeInsets.only(top: 8.0), color: isDarkTheme ? Colors.white : Color(0xFF414042),
child: Icon( fontWeight: FontWeight.w600,
Icons.brightness_1, ),
size: 5, ),
color: isDarkTheme SizedBox(height: 8),
? Colors.white Padding(
: Color(0xFF414042), padding: const EdgeInsets.only(left: 7.0),
), child: Column(
), // Bullet point children: [
SizedBox(width: 8), Row(
Expanded( crossAxisAlignment: CrossAxisAlignment.start,
child: Text( children: [
context.translate( Padding(
'Update your profile details, such as name, password, and region, to personalize your experience.', padding: const EdgeInsets.only(top: 8.0),
'قم بتحديث تفاصيل ملفك الشخصي، مثل الاسم وكلمة المرور والمنطقة، لتخصيص تجربتك.', child: Icon(
), Icons.brightness_1,
textAlign: TextAlign.justify, // Align the text size: 5,
softWrap: true, color: isDarkTheme
style: TextStyle( ? Colors.white
color: isDarkTheme : Color(0xFF414042),
? Colors.white ),
: Color(0xFF898C81), ), // Bullet point
), SizedBox(width: 8),
), Expanded(
), // Space between bullet and text child: Text(
], context.translate(
), 'Update your profile details, such as name, password, and region, to personalize your experience.',
], 'قم بتحديث تفاصيل ملفك الشخصي، مثل الاسم وكلمة المرور والمنطقة، لتخصيص تجربتك.',
), ),
), textAlign:
], TextAlign.justify, // Align the text
),) softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
), // Space between bullet and text
],
),
],
),
),
],
),
)
], ],
), ),
), ),

View File

@ -182,491 +182,505 @@ class _ChangeMyPasswordState extends ConsumerState<ChangeMyPassword> {
), ),
), ),
), ),
SizedBox( // SizedBox(
height: 20, // height: 20,
// width: MediaQuery.of(context).size.width, //
// height: MediaQuery.of(context).size.height * 0.36, // ),
// child: Image.asset( Padding(
// 'assets/user_guide/changePassword.png', padding: const EdgeInsets.all(30.0),
// fit: BoxFit.contain, child: Column(
// ), crossAxisAlignment: CrossAxisAlignment.start,
), children: [
Padding(padding: const EdgeInsets.all(30.0), Text(
child: Column( context.translate(
crossAxisAlignment: CrossAxisAlignment.start, 'Changing your password helps keep your account secure. Follow these steps to update your password:',
children: [ 'يُساعد تغيير كلمة المرور في الحفاظ على أمان حسابك. اتبع هذه الخطوات لتحديث كلمة مرور',
Text( ),
context.translate( style: TextStyle(
'Changing your password helps keep your account secure. Follow these steps to update your password:', color:
'يُساعد تغيير كلمة المرور في الحفاظ على أمان حسابك. اتبع هذه الخطوات لتحديث كلمة مرور', isDarkTheme ? Colors.white : Color(0xFF898C81)),
),
style: TextStyle(
color: isDarkTheme ? Colors.white : Color(0xFF898C81)),
),
SizedBox(height: 12),
Text(
context.translate(
'Steps to Change Password', 'خطوات تغيير كلمة المرور '),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
), ),
fontSize: 22, SizedBox(height: 12),
color: isDarkTheme ? Colors.white : Color(0xFF414042), Text(
fontWeight: FontWeight.w600, context.translate('Steps to Change Password',
), 'خطوات تغيير كلمة المرور '),
), style: TextStyle(
SizedBox(height: 8), fontFamily: context.translate(
Text( 'Roboto',
context.translate( 'NotoKufi',
'1. Access the Change Password Page:', ),
'1. الدخول إلى صفحة تغيير كلمة المرور:', fontSize: 22,
), color: isDarkTheme ? Colors.white : Color(0xFF414042),
style: TextStyle( fontWeight: FontWeight.w600,
fontFamily: context.translate( ),
'Roboto',
'NotoKufi',
), ),
fontSize: 16, SizedBox(height: 8),
color: isDarkTheme ? Colors.white : Color(0xFF414042), Text(
fontWeight: FontWeight.w600, context.translate(
), '1. Access the Change Password Page:',
), '1. الدخول إلى صفحة تغيير كلمة المرور:',
SizedBox(height: 8), ),
Padding( style: TextStyle(
padding: const EdgeInsets.only(left: 8.0), fontFamily: context.translate(
child: Column( 'Roboto',
children: [ 'NotoKufi',
Row( ),
crossAxisAlignment: CrossAxisAlignment.start, fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [ children: [
Padding( Row(
padding: const EdgeInsets.only(top: 8.0), crossAxisAlignment: CrossAxisAlignment.start,
child: Icon( children: [
Icons.brightness_1, Padding(
size: 5, padding: const EdgeInsets.only(top: 8.0),
color: isDarkTheme child: Icon(
? Colors.white Icons.brightness_1,
: Color(0xFF414042), size: 5,
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate(
'From the Profile page, tap on the ',
'من صفحة الملف الشخصي، انقر على رابط ',
),
style: TextStyle(
fontSize: 16,
color: isDarkTheme color: isDarkTheme
? Colors.white ? Colors.white
: Color(0xFF898C81), : Color(0xFF414042),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
children: <TextSpan>[ ), // Bullet point
TextSpan( SizedBox(
width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate( text: context.translate(
'"Change Password"', 'From the Profile page, tap on the ',
'"تغيير كلمة المرور" ', 'من صفحة الملف الشخصي، انقر على رابط ',
), ),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontSize: 16,
color: isDarkTheme color: isDarkTheme
? Colors.white ? Colors.white
: Color(0xFF414042), : Color(0xFF898C81),
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
), ),
children: <TextSpan>[
TextSpan(
text: context.translate(
'"Change Password"',
'"تغيير كلمة المرور" ',
),
style: TextStyle(
fontWeight: FontWeight.w600,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
),
TextSpan(
text: context.translate(
' link at the bottom.',
'في الأسفل.',
),
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
],
), ),
TextSpan( ),
text: context.translate(
' link at the bottom.',
'في الأسفل.',
),
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
],
), ),
), ],
), ),
], ],
), ),
],
),
),
SizedBox(height: 8),
Text(
context.translate(
'2. Enter Old Password:',
'2. إدخال كلمة المرور القديمة:',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
), ),
fontSize: 16, SizedBox(height: 8),
color: isDarkTheme ? Colors.white : Color(0xFF414042), Text(
fontWeight: FontWeight.w600, context.translate(
), '2. Enter Old Password:',
), '2. إدخال كلمة المرور القديمة:',
SizedBox(height: 8), ),
Padding( style: TextStyle(
padding: const EdgeInsets.only(left: 8.0), fontFamily: context.translate(
child: Column( 'Roboto',
children: [ 'NotoKufi',
Row( ),
crossAxisAlignment: CrossAxisAlignment.start, fontSize: 16,
children: [ color: isDarkTheme ? Colors.white : Color(0xFF414042),
Padding( fontWeight: FontWeight.w600,
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Enter your current password in the first field.',
'أدخل كلمة المرور الحالية في الحقل الأول.',
),
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
), ),
],
),
),
SizedBox(height: 8),
Text(
context.translate(
'3. Set a New Password:',
'3. تعيين كلمة مرور جديدة:',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
), ),
fontSize: 16, SizedBox(height: 8),
color: isDarkTheme ? Colors.white : Color(0xFF414042), Padding(
fontWeight: FontWeight.w600, padding: const EdgeInsets.only(left: 8.0),
), child: Column(
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Padding( Row(
padding: const EdgeInsets.only(top: 8.0), crossAxisAlignment: CrossAxisAlignment.start,
child: Icon( children: [
Icons.brightness_1, Padding(
size: 5, padding: const EdgeInsets.only(top: 8.0),
color: isDarkTheme child: Icon(
? Colors.white Icons.brightness_1,
: Color(0xFF414042), size: 5,
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Enter your new password in the second field.',
'أدخل كلمة المرور الجديدة في الحقل الثاني.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Re-enter the new password in the third field for confirmation.',
'أعد إدخال كلمة المرور الجديدة في الحقل الثالث للتأكيد.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
],
),
),
SizedBox(height: 8),
Text(
context.translate(
'4. Password Requirements:',
'4. متطلبات كلمة المرور:',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Your new password must be different from the previously used password.',
'جب أن تكون كلمة المرور الجديدة مختلفة عن كلمة المرور المستخدمة سابقًا',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
],
),
),
SizedBox(height: 8),
Text(
context.translate(
'5. Save Your Password:', '5. حفظ كلمة المرور '),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate(
'Tap the ', 'انقرعلى زر '),
style: TextStyle(
fontSize: 16,
// color: Color(0xFF898C81),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: isDarkTheme color: isDarkTheme
? Colors.white ? Colors.white
: Color(0xFF898C81), : Color(0xFF414042),
), ),
children: <TextSpan>[ ), // Bullet point
TextSpan( SizedBox(
text: context.translate('Save ', '"حفظ".'), width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Enter your current password in the first field.',
'أدخل كلمة المرور الحالية في الحقل الأول.',
),
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
textAlign:
TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
],
),
),
SizedBox(height: 8),
Text(
context.translate(
'3. Set a New Password:',
'3. تعيين كلمة مرور جديدة:',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(
width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Enter your new password in the second field.',
'أدخل كلمة المرور الجديدة في الحقل الثاني.',
),
textAlign:
TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(
width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Re-enter the new password in the third field for confirmation.',
'أعد إدخال كلمة المرور الجديدة في الحقل الثالث للتأكيد.',
),
textAlign:
TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
],
),
),
SizedBox(height: 8),
Text(
context.translate(
'4. Password Requirements:',
'4. متطلبات كلمة المرور:',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(
width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Your new password must be different from the previously used password.',
'جب أن تكون كلمة المرور الجديدة مختلفة عن كلمة المرور المستخدمة سابقًا',
),
textAlign:
TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
],
),
),
SizedBox(height: 8),
Text(
context.translate(
'5. Save Your Password:', '5. حفظ كلمة المرور '),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(
width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate(
'Tap the ', 'انقرعلى زر '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontSize: 16,
color: isDarkTheme // color: Color(0xFF898C81),
? Colors.white
: Color(0xFF414042),
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
),
),
TextSpan(
text: context.translate('button', ''),
style: TextStyle(
color: isDarkTheme color: isDarkTheme
? Colors.white ? Colors.white
: Color(0xFF898C81), : Color(0xFF898C81),
), ),
children: <TextSpan>[
TextSpan(
text: context.translate(
'Save ', '"حفظ".'),
style: TextStyle(
fontWeight: FontWeight.w600,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
),
TextSpan(
text: context.translate('button', ''),
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
],
), ),
], ),
), ),
), ],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(
width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'A confirmation message will appear: “Password has been successfully updated.”',
'ستظهر رسالة تأكيد: "تم تحديث كلمة المرور بنجاح".',
),
textAlign:
TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
), ),
], ],
), ),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'A confirmation message will appear: “Password has been successfully updated.”',
'ستظهر رسالة تأكيد: "تم تحديث كلمة المرور بنجاح".',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
],
),
),
SizedBox(height: 8),
Text(
context.translate('6. Re-Login:', '6. إعادة تسجيل الدخول'),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
), ),
fontSize: 16, SizedBox(height: 8),
color: isDarkTheme ? Colors.white : Color(0xFF414042), Text(
fontWeight: FontWeight.w600, context.translate(
), '6. Re-Login:', '6. إعادة تسجيل الدخول'),
), style: TextStyle(
SizedBox(height: 8), fontFamily: context.translate(
Padding( 'Roboto',
padding: const EdgeInsets.only(left: 8.0), 'NotoKufi',
child: Column( ),
children: [ fontSize: 16,
Row( color: isDarkTheme ? Colors.white : Color(0xFF414042),
crossAxisAlignment: CrossAxisAlignment.start, fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [ children: [
Padding( Row(
padding: const EdgeInsets.only(top: 8.0), crossAxisAlignment: CrossAxisAlignment.start,
child: Icon( children: [
Icons.brightness_1, Padding(
size: 5, padding: const EdgeInsets.only(top: 8.0),
color: isDarkTheme child: Icon(
? Colors.white Icons.brightness_1,
: Color(0xFF414042), size: 5,
), color: isDarkTheme
), // Bullet point ? Colors.white
SizedBox(width: 8), // Space between bullet and text : Color(0xFF414042),
Expanded( ),
child: Text( ), // Bullet point
context.translate( SizedBox(
'Log in again using your new password to continue using the app', width: 8), // Space between bullet and text
'قم بتسجيل الدخول مرة أخرى باستخدام كلمة المرور الجديدة للاستمرار في استخدام التطبيق.', Expanded(
child: Text(
context.translate(
'Log in again using your new password to continue using the app',
'قم بتسجيل الدخول مرة أخرى باستخدام كلمة المرور الجديدة للاستمرار في استخدام التطبيق.',
),
textAlign:
TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
), ),
textAlign: TextAlign.justify, // Align the text ],
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
), ),
], ],
), ),
], ),
), ],
), ),
], )
),)
], ],
), ),
), ),

View File

@ -8,7 +8,8 @@ import 'package:uae_stat/config/theme/theme_provider.dart';
import 'package:uae_stat/config/toggle_lang_service.dart'; import 'package:uae_stat/config/toggle_lang_service.dart';
import 'package:uae_stat/domain/use_cases/language.dart'; import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart'; import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// import 'package:uae_stat/l10n/app_localizations.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/components/indicators/locale_provider.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';
@ -182,197 +183,204 @@ class _HowUseTheAppState extends ConsumerState<HowUseTheApp> {
), ),
), ),
), ),
SizedBox( // SizedBox(
height:10, // height: 10,
// width: MediaQuery.of(context).size.width, // ),
// height: MediaQuery.of(context).size.height * 0.36,
// child: Image.asset(
// 'assets/user_guide/howUse.png',
// fit: BoxFit.contain,
// ),
),
Padding( Padding(
padding: const EdgeInsets.all(30.0), padding: const EdgeInsets.all(30.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
context.translate( context.translate(
'1. Registration and Approval:', '1. Registration and Approval:',
'1. التسجيل والموافقة:', '1. التسجيل والموافقة:',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
), ),
fontSize: 16, style: TextStyle(
color: isDarkTheme ? Colors.white : Color(0xFF414042), fontFamily: context.translate(
fontWeight: FontWeight.w600, 'Roboto',
), 'NotoKufi',
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
), ),
), // Bullet point fontSize: 16,
SizedBox(width: 8), // Space between bullet and text color: isDarkTheme ? Colors.white : Color(0xFF414042),
Expanded( fontWeight: FontWeight.w600,
child: Text( ),
context.translate( ),
'Sign up for the app and wait for admin approval.', SizedBox(height: 8),
'قم بالتسجيل في التطبيق وانتظر الموافقة من الإدارة.', Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
), ),
textAlign: TextAlign.justify, // Align the text ), // Bullet point
softWrap: true, SizedBox(width: 8), // Space between bullet and text
style: TextStyle( Expanded(
color: child: Text(
isDarkTheme ? Colors.white : Color(0xFF898C81)), context.translate(
), 'Sign up for the app and wait for admin approval.',
), 'قم بالتسجيل في التطبيق وانتظر الموافقة من الإدارة.',
], ),
), textAlign: TextAlign.justify, // Align the text
SizedBox(height: 8), softWrap: true,
Text( style: TextStyle(
context.translate( color: isDarkTheme
'2. Login and Navigation:', ? Colors.white
'2. تسجيل الدخول والتصفح:', : Color(0xFF898C81)),
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Once approved, log in to access the app. Navigate through the categories on the home screen.',
'بعد الموافقة، قم بتسجيل الدخول للوصول إلى التطبيق. تصفح الفئات المختلفة على الشاشة الرئيسية.',
), ),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color:
isDarkTheme ? Colors.white : Color(0xFF898C81)),
), ),
), ],
],
),
SizedBox(height: 8),
Text(
context.translate(
'3. Access Data:',
'3. الوصول إلى البيانات:',
), ),
style: TextStyle( SizedBox(height: 8),
fontFamily: context.translate( Text(
'Roboto', context.translate(
'NotoKufi', '2. Login and Navigation:',
'2. تسجيل الدخول والتصفح:',
), ),
fontSize: 16, style: TextStyle(
color: isDarkTheme ? Colors.white : Color(0xFF414042), fontFamily: context.translate(
fontWeight: FontWeight.w600, 'Roboto',
), 'NotoKufi',
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
), ),
), // Bullet point fontSize: 16,
SizedBox(width: 8), // Space between bullet and text color: isDarkTheme ? Colors.white : Color(0xFF414042),
Expanded( fontWeight: FontWeight.w600,
child: Text( ),
context.translate( ),
'Drill down into specific categories like "Economy" or "Environment" to view detailed KPIs and visual insights.', SizedBox(height: 8),
'قم بالتعمق في الفئات المحددة مثل "الاقتصاد" أو "البيئة" لعرض مؤشرات الأداء الرئيسية والرؤى المرئية بالتفصيل.', Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
), ),
textAlign: TextAlign.justify, // Align the text ), // Bullet point
softWrap: true, SizedBox(width: 8), // Space between bullet and text
style: TextStyle( Expanded(
color: child: Text(
isDarkTheme ? Colors.white : Color(0xFF898C81)), context.translate(
), 'Once approved, log in to access the app. Navigate through the categories on the home screen.',
), 'بعد الموافقة، قم بتسجيل الدخول للوصول إلى التطبيق. تصفح الفئات المختلفة على الشاشة الرئيسية.',
], ),
), textAlign: TextAlign.justify, // Align the text
SizedBox(height: 8), softWrap: true,
Text( style: TextStyle(
context.translate( color: isDarkTheme
'4. Bookmark Metrics:', ? Colors.white
'4. وضع إشارة مرجعية للمقاييس:', : Color(0xFF898C81)),
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Save important statistics for easy reference.',
'احفظ الإحصائيات المهمة للرجوع إليها بسهولة.',
), ),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color:
isDarkTheme ? Colors.white : Color(0xFF898C81)),
), ),
],
),
SizedBox(height: 8),
Text(
context.translate(
'3. Access Data:',
'3. الوصول إلى البيانات:',
), ),
], style: TextStyle(
), fontFamily: context.translate(
], 'Roboto',
),) 'NotoKufi',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Drill down into specific categories like "Economy" or "Environment" to view detailed KPIs and visual insights.',
'قم بالتعمق في الفئات المحددة مثل "الاقتصاد" أو "البيئة" لعرض مؤشرات الأداء الرئيسية والرؤى المرئية بالتفصيل.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81)),
),
),
],
),
SizedBox(height: 8),
Text(
context.translate(
'4. Bookmark Metrics:',
'4. وضع إشارة مرجعية للمقاييس:',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Save important statistics for easy reference.',
'احفظ الإحصائيات المهمة للرجوع إليها بسهولة.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81)),
),
),
],
),
],
),
)
], ],
), ),
), ),

View File

@ -11,7 +11,8 @@ import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Countr
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/components/indicators/locale_provider.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';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// import 'package:uae_stat/l10n/app_localizations.dart';
class Purpose extends ConsumerStatefulWidget { class Purpose extends ConsumerStatefulWidget {
const Purpose({super.key}); const Purpose({super.key});
@ -182,133 +183,139 @@ class _PurposeState extends ConsumerState<Purpose> {
), ),
), ),
), ),
SizedBox( // SizedBox(
height: 10, // height: 10,
// width: MediaQuery.of(context).size.width, //
// height: MediaQuery.of(context).size.height * 0.36, // ),
// child: Image.asset( Padding(
// 'assets/user_guide/purpose.png', padding: const EdgeInsets.all(30.0),
// fit: BoxFit.contain, child: Column(
// ), crossAxisAlignment: CrossAxisAlignment.start,
), children: [
Padding(padding: const EdgeInsets.all(30.0), Row(
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ Padding(
Row( padding: const EdgeInsets.only(top: 8.0),
crossAxisAlignment: CrossAxisAlignment.start, child: Icon(
children: [ Icons.brightness_1,
Padding( size: 5,
padding: const EdgeInsets.only(top: 8.0), color: isDarkTheme
child: Icon( ? Colors.white
Icons.brightness_1, : Color(0xFF414042),
size: 5, ),
color: isDarkTheme ? Colors.white : Color(0xFF414042), ), // Bullet point
), SizedBox(width: 8), // Space between bullet and text
), // Bullet point Expanded(
SizedBox(width: 8), // Space between bullet and text child: RichText(
Expanded( text: TextSpan(
child: RichText( text: context.translate(
text: TextSpan( 'Provide ',
text: context.translate( 'توفير الإحصائيات الرسمية لدولة الإمارات بشكل سهل الوصول.',
'Provide ',
'توفير الإحصائيات الرسمية لدولة الإمارات بشكل سهل الوصول.',
),
style: TextStyle(
color:
isDarkTheme ? Colors.white : Color(0xFF898C81),
fontSize: 16,
fontFamily: context.translate(
'Roboto',
'NotoKufi',
), ),
), style: TextStyle(
children: <TextSpan>[ color: isDarkTheme
TextSpan( ? Colors.white
text: : Color(0xFF898C81),
context.translate('official statistics ', ''), fontSize: 16,
style: TextStyle( fontFamily: context.translate(
fontWeight: FontWeight.bold, 'Roboto',
color: isDarkTheme 'NotoKufi',
? Colors.white
: Color(0xFF414042),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan( children: <TextSpan>[
text: context.translate( TextSpan(
'on the UAE in an accessible format.', ''), text: context.translate(
style: TextStyle( 'official statistics ', ''),
style: TextStyle(
fontWeight: FontWeight.bold,
color: isDarkTheme color: isDarkTheme
? Colors.white ? Colors.white
: Color(0xFF898C81)), : Color(0xFF414042),
), fontFamily: context.translate(
], 'Roboto',
'NotoKufi',
),
),
),
TextSpan(
text: context.translate(
'on the UAE in an accessible format.',
''),
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81)),
),
],
),
), ),
), ),
), ],
], ),
), Row(
Row( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ Padding(
Padding( padding: const EdgeInsets.only(top: 8.0),
padding: const EdgeInsets.only(top: 8.0), child: Icon(
child: Icon( Icons.brightness_1,
Icons.brightness_1, size: 5,
size: 5, color: isDarkTheme
color: isDarkTheme ? Colors.white : Color(0xFF414042), ? Colors.white
), : Color(0xFF414042),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Support decision-making and research with reliable, up-to-date data.',
'دعم اتخاذ القرارات والبحوث من خلال بيانات موثوقة ومحدثة.',
), ),
textAlign: TextAlign.justify, // Align the text ), // Bullet point
softWrap: true, SizedBox(width: 8), // Space between bullet and text
style: TextStyle( Expanded(
color: child: Text(
isDarkTheme ? Colors.white : Color(0xFF898C81)), context.translate(
), 'Support decision-making and research with reliable, up-to-date data.',
), 'دعم اتخاذ القرارات والبحوث من خلال بيانات موثوقة ومحدثة.',
], ),
), textAlign: TextAlign.justify, // Align the text
Row( softWrap: true,
crossAxisAlignment: CrossAxisAlignment.start, style: TextStyle(
children: [ color: isDarkTheme
Padding( ? Colors.white
padding: const EdgeInsets.only(top: 8.0), : Color(0xFF898C81)),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Enable users to interact with data visually through graphs and metrics.',
'تمكين المستخدمين من التفاعل مع البيانات بصريًا من خلال الرسوم البيانية والمقاييس.',
), ),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color:
isDarkTheme ? Colors.white : Color(0xFF898C81)),
), ),
), ],
], ),
), Row(
], crossAxisAlignment: CrossAxisAlignment.start,
),) children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Enable users to interact with data visually through graphs and metrics.',
'تمكين المستخدمين من التفاعل مع البيانات بصريًا من خلال الرسوم البيانية والمقاييس.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81)),
),
),
],
),
],
),
)
], ],
), ),
), ),

View File

@ -10,7 +10,8 @@ import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/components/indicators/locale_provider.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';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// import 'package:uae_stat/l10n/app_localizations.dart';
class StayUpdate extends ConsumerStatefulWidget { class StayUpdate extends ConsumerStatefulWidget {
const StayUpdate({super.key}); const StayUpdate({super.key});
@ -179,15 +180,9 @@ class _StayUpdateState extends ConsumerState<StayUpdate> {
), ),
), ),
), ),
SizedBox( // SizedBox(
height: 10, // height: 10,
// width: MediaQuery.of(context).size.width, // ),
// height: MediaQuery.of(context).size.height * 0.36,
// child: Image.asset(
// 'assets/user_guide/stayUpdate.png',
// fit: BoxFit.contain,
// ),
),
Padding( Padding(
padding: const EdgeInsets.all(30), padding: const EdgeInsets.all(30),
child: Row( child: Row(
@ -211,14 +206,14 @@ class _StayUpdateState extends ConsumerState<StayUpdate> {
textAlign: TextAlign.justify, // Align the text textAlign: TextAlign.justify, // Align the text
softWrap: true, softWrap: true,
style: TextStyle( style: TextStyle(
color: color: isDarkTheme
isDarkTheme ? Colors.white : Color(0xFF898C81)), ? Colors.white
: Color(0xFF898C81)),
), ),
), ),
], ],
), ),
), ),
], ],
), ),
), ),

View File

@ -10,7 +10,8 @@ import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart'; import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/components/indicators/locale_provider.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';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// import 'package:uae_stat/l10n/app_localizations.dart';
class WhoUseTheApp extends ConsumerStatefulWidget { class WhoUseTheApp extends ConsumerStatefulWidget {
const WhoUseTheApp({super.key}); const WhoUseTheApp({super.key});
@ -181,7 +182,7 @@ class _WhoUseTheAppState extends ConsumerState<WhoUseTheApp> {
), ),
), ),
), ),
SizedBox(height: 10), // SizedBox(height: 10),
// SizedBox( // SizedBox(
// width: MediaQuery.of(context).size.width, // width: MediaQuery.of(context).size.width,
// height: MediaQuery.of(context).size.height * 0.36, // height: MediaQuery.of(context).size.height * 0.36,
@ -192,107 +193,116 @@ class _WhoUseTheAppState extends ConsumerState<WhoUseTheApp> {
// ), // ),
Padding( Padding(
padding: const EdgeInsets.all(30.0), padding: const EdgeInsets.all(30.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
context.translate( context.translate(
'This app is intended for:', 'يستهدف هذا التطبيق:'), 'This app is intended for:', 'يستهدف هذا التطبيق:'),
style: TextStyle( style: TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
), ),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
), ),
), SizedBox(height: 8),
SizedBox(height: 8), Row(
Row( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ Padding(
Padding( padding: const EdgeInsets.only(top: 8.0),
padding: const EdgeInsets.only(top: 8.0), child: Icon(
child: Icon( Icons.brightness_1,
Icons.brightness_1, size: 5,
size: 5, color: isDarkTheme
color: isDarkTheme ? Colors.white : Color(0xFF414042), ? Colors.white
), : Color(0xFF414042),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Government officials requiring UAE statistics for decision-making.',
'المسؤولين الحكوميين الذين يحتاجون إلى إحصاءات دولة الإمارات العربية المتحدة لاتخاذ القرارات.',
), ),
textAlign: TextAlign.justify, // Align the text ), // Bullet point
softWrap: true, SizedBox(width: 8), // Space between bullet and text
style: TextStyle( Expanded(
color: child: Text(
isDarkTheme ? Colors.white : Color(0xFF898C81)), context.translate(
), 'Government officials requiring UAE statistics for decision-making.',
), 'المسؤولين الحكوميين الذين يحتاجون إلى إحصاءات دولة الإمارات العربية المتحدة لاتخاذ القرارات.',
], ),
), textAlign: TextAlign.justify, // Align the text
Row( softWrap: true,
crossAxisAlignment: CrossAxisAlignment.start, style: TextStyle(
children: [ color: isDarkTheme
Padding( ? Colors.white
padding: const EdgeInsets.only(top: 8.0), : Color(0xFF898C81)),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Business professionals and researchers analyzing market trends.',
'المتخصصين في مجال الأعمال والباحثين الذين يقومون بتحليل اتجاهات السوق.',
), ),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color:
isDarkTheme ? Colors.white : Color(0xFF898C81)),
), ),
), ],
], ),
), Row(
Row( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ Padding(
Padding( padding: const EdgeInsets.only(top: 8.0),
padding: const EdgeInsets.only(top: 8.0), child: Icon(
child: Icon( Icons.brightness_1,
Icons.brightness_1, size: 5,
size: 5, color: isDarkTheme
color: isDarkTheme ? Colors.white : Color(0xFF414042), ? Colors.white
), : Color(0xFF414042),
), // Bullet point ),
SizedBox(width: 8), // Space between bullet and text ), // Bullet point
Expanded( SizedBox(width: 8), // Space between bullet and text
child: Text( Expanded(
context.translate( child: Text(
'Students and educators needing reliable data for study and teaching.', context.translate(
'الطلاب والمعلمين الذين يحتاجون إلى بيانات موثوقة للدراسة والتعليم.', 'Business professionals and researchers analyzing market trends.',
'المتخصصين في مجال الأعمال والباحثين الذين يقومون بتحليل اتجاهات السوق.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81)),
), ),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color:
isDarkTheme ? Colors.white : Color(0xFF898C81)),
), ),
), ],
], ),
), Row(
], crossAxisAlignment: CrossAxisAlignment.start,
),) children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Students and educators needing reliable data for study and teaching.',
'الطلاب والمعلمين الذين يحتاجون إلى بيانات موثوقة للدراسة والتعليم.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81)),
),
),
],
),
],
),
)
], ],
), ),
), ),

View File

@ -11,8 +11,8 @@ import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart'; import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/components/indicators/locale_provider.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';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// import 'package:uae_stat/l10n/app_localizations.dart';
class aboutTheApp extends ConsumerStatefulWidget { class aboutTheApp extends ConsumerStatefulWidget {
const aboutTheApp({super.key}); const aboutTheApp({super.key});
@ -149,7 +149,7 @@ class _aboutTheAppState extends ConsumerState<aboutTheApp> {
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide( bottom: BorderSide(
color: Colors.grey.shade300, color: isDarkTheme ? Color(0xFF898C81) : Color(0xFFDEDEDE),
width: 0.5, width: 0.5,
), // Grey bottom line ), // Grey bottom line
), ),
@ -173,7 +173,13 @@ class _aboutTheAppState extends ConsumerState<aboutTheApp> {
), ),
trailing: Icon( trailing: Icon(
Icons.keyboard_arrow_right, Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042), color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
),
shape: Border(
bottom: BorderSide(
color: Color(0xFFDEDEDE),
width: 1,
), // Grey bottom line
), ),
), ),
), ),
@ -181,7 +187,7 @@ class _aboutTheAppState extends ConsumerState<aboutTheApp> {
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide( bottom: BorderSide(
color: Colors.grey.shade300, color: isDarkTheme ? Color(0xFF898C81) : Color(0xFFDEDEDE),
width: 0.5, width: 0.5,
), // Grey bottom line ), // Grey bottom line
), ),
@ -205,12 +211,12 @@ class _aboutTheAppState extends ConsumerState<aboutTheApp> {
), ),
trailing: Icon( trailing: Icon(
Icons.keyboard_arrow_right, Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042), color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
), ),
shape: Border( shape: Border(
bottom: BorderSide( bottom: BorderSide(
color: Colors.black, color: Color(0xFFDEDEDE),
width: 3, width: 1,
), // Grey bottom line ), // Grey bottom line
), ),
), ),

View File

@ -10,8 +10,8 @@ import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart'; import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/components/indicators/locale_provider.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';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// import 'package:uae_stat/l10n/app_localizations.dart';
class FAQPage extends ConsumerStatefulWidget { class FAQPage extends ConsumerStatefulWidget {
const FAQPage({super.key}); const FAQPage({super.key});
@ -119,6 +119,7 @@ class _FAQPageState extends ConsumerState<FAQPage> {
return BaseScaffold( return BaseScaffold(
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
showDivider: true,
showBackButton: true, showBackButton: true,
// appbarColor: Colors.white, // appbarColor: Colors.white,
backgroundColor: isDarkTheme ? Colors.black : Colors.white, backgroundColor: isDarkTheme ? Colors.black : Colors.white,
@ -133,7 +134,7 @@ class _FAQPageState extends ConsumerState<FAQPage> {
'NotoKufi', 'NotoKufi',
), ),
fontSize: 22, fontSize: 22,
color: isDarkTheme ? Colors.white : Colors.black , color: isDarkTheme ? Colors.white : Colors.black,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500, // fontWeight: FontWeight.w500,
), ),
@ -935,7 +936,8 @@ class _QuestionAnswerCardState extends State<QuestionAnswerCard> {
trailing: Icon(isExpanded trailing: Icon(isExpanded
? Icons.keyboard_arrow_up ? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down), : Icons.keyboard_arrow_down),
iconColor: widget.isDarkTheme ? Colors.white : Color(0xFF898C81), iconColor:
widget.isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
onTap: () { onTap: () {
setState(() { setState(() {
isExpanded = !isExpanded; isExpanded = !isExpanded;

View File

@ -11,7 +11,8 @@ import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart'; import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/components/indicators/locale_provider.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';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// import 'package:uae_stat/l10n/app_localizations.dart';
import 'package:uae_stat/infrastructure/services/img_asset_paths/banner_asset_path.dart'; import 'package:uae_stat/infrastructure/services/img_asset_paths/banner_asset_path.dart';
class UsingFeatures extends ConsumerStatefulWidget { class UsingFeatures extends ConsumerStatefulWidget {
@ -136,7 +137,7 @@ class _UsingFeaturesState extends ConsumerState<UsingFeatures> {
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
color: isDarkTheme ? Colors.white : Colors.black, color: isDarkTheme ? Colors.white : Colors.black,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500, // fontWeight: FontWeight.w500,
), ),
@ -173,7 +174,13 @@ class _UsingFeaturesState extends ConsumerState<UsingFeatures> {
), ),
trailing: Icon( trailing: Icon(
Icons.keyboard_arrow_right, Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042), color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
),
shape: Border(
bottom: BorderSide(
color: Color(0xFFDEDEDE),
width: 1,
), // Grey bottom line
), ),
), ),
), ),
@ -205,11 +212,13 @@ class _UsingFeaturesState extends ConsumerState<UsingFeatures> {
), ),
trailing: Icon( trailing: Icon(
Icons.keyboard_arrow_right, Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042), color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
), ),
shape: Border( shape: Border(
bottom: BorderSide( bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line color: Color(0xFFDEDEDE),
width: 1,
), // Grey bottom line
), ),
), ),
), ),
@ -240,11 +249,13 @@ class _UsingFeaturesState extends ConsumerState<UsingFeatures> {
), ),
trailing: Icon( trailing: Icon(
Icons.keyboard_arrow_right, Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042), color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
), ),
shape: Border( shape: Border(
bottom: BorderSide( bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line color: Color(0xFFDEDEDE),
width: 1,
), // Grey bottom line
), ),
), ),
), ),
@ -276,11 +287,13 @@ class _UsingFeaturesState extends ConsumerState<UsingFeatures> {
), ),
trailing: Icon( trailing: Icon(
Icons.keyboard_arrow_right, Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042), color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
), ),
shape: Border( shape: Border(
bottom: BorderSide( bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line color: Color(0xFFDEDEDE),
width: 1,
), // Grey bottom line
), ),
), ),
), ),
@ -311,11 +324,13 @@ class _UsingFeaturesState extends ConsumerState<UsingFeatures> {
), ),
trailing: Icon( trailing: Icon(
Icons.keyboard_arrow_right, Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042), color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
), ),
shape: Border( shape: Border(
bottom: BorderSide( bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line color: Color(0xFFDEDEDE),
width: 1,
), // Grey bottom line
), ),
), ),
), ),
@ -347,11 +362,13 @@ class _UsingFeaturesState extends ConsumerState<UsingFeatures> {
), ),
trailing: Icon( trailing: Icon(
Icons.keyboard_arrow_right, Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042), color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
), ),
shape: Border( shape: Border(
bottom: BorderSide( bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line color: Color(0xFFDEDEDE),
width: 1,
), // Grey bottom line
), ),
), ),
), ),
@ -383,11 +400,13 @@ class _UsingFeaturesState extends ConsumerState<UsingFeatures> {
), ),
trailing: Icon( trailing: Icon(
Icons.keyboard_arrow_right, Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042), color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
), ),
shape: Border( shape: Border(
bottom: BorderSide( bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line color: Color(0xFFDEDEDE),
width: 1,
), // Grey bottom line
), ),
), ),
), ),

View File

@ -4,12 +4,13 @@ import 'package:go_router/go_router.dart';
import 'package:uae_stat/config/theme/theme_provider.dart'; import 'package:uae_stat/config/theme/theme_provider.dart';
import 'package:uae_stat/config/toggle_lang_service.dart'; import 'package:uae_stat/config/toggle_lang_service.dart';
import 'package:uae_stat/domain/use_cases/language.dart'; import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// import 'package:uae_stat/l10n/app_localizations.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
// import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart'; // import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.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';
import 'package:iconify_design/iconify_design.dart'; import 'package:iconify_design/iconify_design.dart';
// import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// import 'package:uae_stat/l10n/app_localizations.dart'; // import 'package:uae_stat/l10n/app_localizations.dart';
class Userguide extends ConsumerStatefulWidget { class Userguide extends ConsumerStatefulWidget {
@ -34,9 +35,9 @@ class _UserguideState extends ConsumerState<Userguide> {
{ {
'routePath': 'features', 'routePath': 'features',
'color': Color(0xFFAA8E83), 'color': Color(0xFFAA8E83),
'text': 'Features', 'text': 'Key Features',
'icon': 'pajamas:issue-type-feature', 'icon': 'pajamas:issue-type-feature',
'text-ar': 'الميزات' 'text-ar': 'الميزات الرئيسية'
}, },
{ {
'routePath': 'faq', 'routePath': 'faq',
@ -52,7 +53,6 @@ class _UserguideState extends ConsumerState<Userguide> {
initState() { initState() {
super.initState(); super.initState();
print('123456789'); print('123456789');
} }
@override @override
@ -107,14 +107,12 @@ class _UserguideState extends ConsumerState<Userguide> {
child: BaseScaffold( child: BaseScaffold(
showDivider: true, showDivider: true,
bottomColor: isDarkTheme ? Color(0xFF111111) : Colors.white, bottomColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
dividerColor: isDarkTheme ? Color(0xFF111111) : Colors.grey[300], // dividerColor: isDarkTheme ? Color(0xFF111111) : Colors.grey[300],
dividerColor: isDarkTheme ? Colors.grey : Colors.grey[300],
appbarColor: isDarkTheme ? Color(0xFF111111) : Colors.white, appbarColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
title: Text( title: Text(AppLocalizations.of(context)!.guide_title,
AppLocalizations.of(context)!.guide_title, style: TextStyle(
style: TextStyle( color: isDarkTheme ? Colors.white : Color(0xFF414042))),
color: isDarkTheme ? Colors.white : Color(0xFF414042)
)
),
body: Container( body: Container(
color: isDarkTheme ? Color(0xFF111111) : Colors.white, color: isDarkTheme ? Color(0xFF111111) : Colors.white,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 20), padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 20),
@ -181,7 +179,7 @@ class _HoverContainerState extends ConsumerState<HoverContainer> {
width: screenWidth * 0.30, width: screenWidth * 0.30,
margin: EdgeInsets.all(1), margin: EdgeInsets.all(1),
decoration: BoxDecoration( decoration: BoxDecoration(
color: isDarkTheme ? Color(0xFF111111) : Colors.white, color: isDarkTheme ? Color(0xFF111111) : Colors.white,
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
boxShadow: isHovered boxShadow: isHovered

View File

@ -713,7 +713,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
print('NAVuserDetails: $userDetailsResponse'); print('NAVuserDetails: $userDetailsResponse');
setState(() { setState(() {
userName = userDetailsResponse.data['uname'] ?? ''; userName = userDetailsResponse.data['full_name'] ?? '';
userEmail = userDetailsResponse.data['email'] ?? ''; userEmail = userDetailsResponse.data['email'] ?? '';
userAvatar = userDetailsResponse.data['avatar'] ?? ''; userAvatar = userDetailsResponse.data['avatar'] ?? '';
role = userDetailsResponse.data['role'] ?? ''; role = userDetailsResponse.data['role'] ?? '';
@ -973,7 +973,8 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
: Alignment.centerLeft, : Alignment.centerLeft,
child: DefaultTextStyle( child: DefaultTextStyle(
style: TextStyle( style: TextStyle(
color: widget.colorChange ? Colors.white : Color(0xFFFFFFFF), color: isDarkTheme ? Colors.white : Colors.black,
// color: widget.colorChange ? Colors.white : Color(0xFFFFFFFF),
fontSize: 22, fontSize: 22,
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
@ -1041,8 +1042,16 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
isOn: locale?.languageCode == 'en', isOn: locale?.languageCode == 'en',
knobTextWhenOn: 'ع', knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN', knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300, pathColorWhenOn: Color(0xFFD9D9D9),
pathColorWhenOff: Colors.grey.shade300, pathColorWhenOff: Color(0xFFD9D9D9),
knobTextStyleWhenOn: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
knobTextStyleWhenOff: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
onTap: () { onTap: () {
ref.read(localeProvider.notifier).toggleLocale(); ref.read(localeProvider.notifier).toggleLocale();
}, },
@ -1068,7 +1077,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
// : widget.colorChange // : widget.colorChange
// ? Colors.white // ? Colors.white
// : Colors.black, // : Colors.black,
color: Colors.grey, color: isDarkTheme ? Colors.white : Colors.black,
icon: const Icon(Icons.arrow_back_ios_new, size: 24), icon: const Icon(Icons.arrow_back_ios_new, size: 24),
onPressed: () { onPressed: () {
if (widget.navBackArrow is Text && if (widget.navBackArrow is Text &&
@ -1093,7 +1102,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
constraints: BoxConstraints(), constraints: BoxConstraints(),
key: drawerKey, key: drawerKey,
color: isDarkTheme ? Colors.white : Colors.black, color: isDarkTheme ? Colors.white : Color(0xFF000000),
icon: const Icon(Icons.menu, size: 30), icon: const Icon(Icons.menu, size: 30),
onPressed: () { onPressed: () {
Scaffold.of(context).openDrawer(); Scaffold.of(context).openDrawer();
@ -1387,7 +1396,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
), ),
), ),
), ),
onTap: () => _showLogoutConfirmationDialog(context), onTap: () => _showLogoutConfirmationDialog(context,isDarkTheme),
), ),
if (userId == 'guest') if (userId == 'guest')
ListTile( ListTile(
@ -1477,22 +1486,22 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
])), ])),
bottomNavigationBar: Stack( bottomNavigationBar: Stack(
children: [ children: [
if (isDarkTheme) // if (isDarkTheme)
Positioned( // Positioned(
bottom: 0, // bottom: 0,
left: 0, // left: 0,
right: 0, // right: 0,
child: Container( // child: Container(
height: kBottomNavigationBarHeight + 0, // Adjust as needed // height: kBottomNavigationBarHeight + 0, // Adjust as needed
decoration: BoxDecoration( // decoration: BoxDecoration(
image: DecorationImage( // image: DecorationImage(
image: AssetImage( // image: AssetImage(
'assets/dark_bg.png'), // your dark mode image // 'assets/dark_bg.png'), // your dark mode image
fit: BoxFit.cover, // fit: BoxFit.cover,
), // ),
), // ),
), // ),
), // ),
BottomNavigationBar( BottomNavigationBar(
backgroundColor: isDarkTheme ? Color(0xFF000000) : Colors.white, backgroundColor: isDarkTheme ? Color(0xFF000000) : Colors.white,
currentIndex: _getSelectedIndex(currentRoute), currentIndex: _getSelectedIndex(currentRoute),
@ -1506,7 +1515,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
child: Image.asset( child: Image.asset(
BottomBarAssetIconPath.home, BottomBarAssetIconPath.home,
color: _getSelectedIndex(currentRoute) == 0 color: _getSelectedIndex(currentRoute) == 0
? (isDarkTheme ? Color(0xFF24B4FB) : Colors.black) ? (isDarkTheme ? Color(0xFFFFFFFF) : Colors.black)
: Color(0xFF989898), : Color(0xFF989898),
width: 23.98, width: 23.98,
height: 25, height: 25,
@ -1523,7 +1532,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
child: Image.asset( child: Image.asset(
BottomBarAssetIconPath.uaeMap, BottomBarAssetIconPath.uaeMap,
color: _getSelectedIndex(currentRoute) == 1 color: _getSelectedIndex(currentRoute) == 1
? (isDarkTheme ? Color(0xFF24B4FB) : Colors.black) ? (isDarkTheme ? Color(0xFFFFFFFF) : Colors.black)
: Color(0xFF989898), : Color(0xFF989898),
width: 23.98, width: 23.98,
height: 25, height: 25,
@ -1539,7 +1548,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
child: Image.asset( child: Image.asset(
BottomBarAssetIconPath.ranking, BottomBarAssetIconPath.ranking,
color: _getSelectedIndex(currentRoute) == 2 color: _getSelectedIndex(currentRoute) == 2
? (isDarkTheme ? Color(0xFF24B4FB) : Colors.black) ? (isDarkTheme ? Color(0xFFFFFFFF) : Colors.black)
: Color(0xFF989898), : Color(0xFF989898),
width: 23.98, width: 23.98,
height: 25, height: 25,
@ -1555,7 +1564,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
child: Image.asset( child: Image.asset(
BottomBarAssetIconPath.globe, BottomBarAssetIconPath.globe,
color: _getSelectedIndex(currentRoute) == 3 color: _getSelectedIndex(currentRoute) == 3
? (isDarkTheme ? Color(0xFF24B4FB) : Colors.black) ? (isDarkTheme ? Color(0xFFFFFFFF) : Colors.black)
: Color(0xFF989898), : Color(0xFF989898),
width: 23.98, width: 23.98,
height: 25, height: 25,
@ -1566,8 +1575,8 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
), ),
], ],
key: bottomNavKey, key: bottomNavKey,
selectedItemColor: isDarkTheme ? Color(0xFF24B4FB) : Colors.black, selectedItemColor: isDarkTheme ? Color(0xFFFFFFFF) : Colors.black,
unselectedItemColor: Colors.grey, unselectedItemColor: Color(0xFF989898),
selectedLabelStyle: TextStyle( selectedLabelStyle: TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
@ -1732,7 +1741,7 @@ Future<void> logout(BuildContext context) async {
context.go('/login'); // Redirect to login after logout context.go('/login'); // Redirect to login after logout
} }
void _showLogoutConfirmationDialog(BuildContext context) { void _showLogoutConfirmationDialog(BuildContext context,isDarkTheme) {
double myheight = MediaQuery.of(context).size.height; double myheight = MediaQuery.of(context).size.height;
showDialog( showDialog(
context: context, context: context,
@ -1741,6 +1750,7 @@ void _showLogoutConfirmationDialog(BuildContext context) {
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5.0), // Rounded corners borderRadius: BorderRadius.circular(5.0), // Rounded corners
), ),
backgroundColor: isDarkTheme ? Colors.black : Colors.white,
contentPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero,
title: Text( title: Text(
context.translate('Log Out Confirmation', 'تأكيد تسجيل الخروج'), context.translate('Log Out Confirmation', 'تأكيد تسجيل الخروج'),
@ -1752,6 +1762,7 @@ void _showLogoutConfirmationDialog(BuildContext context) {
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
color: isDarkTheme ? Colors.white : Colors.black,
), ),
), ),
content: Padding( content: Padding(
@ -1785,7 +1796,7 @@ void _showLogoutConfirmationDialog(BuildContext context) {
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(10.0),
), ),
side: BorderSide( side: BorderSide(
color: Color(0xFFAA8E83), // Border color color: Color(0xFFB68A34), // Border color
width: 1, width: 1,
), ),
), ),
@ -1796,7 +1807,7 @@ void _showLogoutConfirmationDialog(BuildContext context) {
'Roboto', 'Roboto',
'NotoKufi', 'NotoKufi',
), ),
color: Color(0xFFAA8E83), color: Color(0xFFB68A34),
fontSize: 16, fontSize: 16,
), ),
), ),
@ -1809,7 +1820,7 @@ void _showLogoutConfirmationDialog(BuildContext context) {
child: TextButton( child: TextButton(
onPressed: () => logout(context), onPressed: () => logout(context),
style: TextButton.styleFrom( style: TextButton.styleFrom(
backgroundColor: Color(0xFFAA8E83), // Background color backgroundColor: Color(0xFFB68A34), // Background color
foregroundColor: Colors.white, foregroundColor: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(10.0),

View File

@ -770,8 +770,16 @@ class LangToggle extends ConsumerWidget {
}, },
knobTextWhenOn: 'ع', knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN', knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300, pathColorWhenOn: Color(0xFFD9D9D9),
pathColorWhenOff: Colors.grey.shade300, pathColorWhenOff: Color(0xFFD9D9D9),
knobTextStyleWhenOn: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
knobTextStyleWhenOff: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
); );
} }
} }

View File

@ -106,7 +106,6 @@ flutter:
generate: true generate: true
uses-material-design: true uses-material-design: true
assets: assets:
- assets/dark_bg.png
- assets/user_guide_videos/ - assets/user_guide_videos/
- assets/logos/ - assets/logos/
- assets/logos/from_alsaray/ - assets/logos/from_alsaray/
@ -166,6 +165,7 @@ flutter:
- assets/competitiveness/ - assets/competitiveness/
- assets/icons/uae_numbers/ShareDark.png - assets/icons/uae_numbers/ShareDark.png
- assets/icons/uae_numbers/ShareLight.png - assets/icons/uae_numbers/ShareLight.png
- assets/icons/misc/successMsg.png
fonts: fonts:
- family: Segoe - family: Segoe