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
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  <EFBFBD>àÕ€„3  ¡¹ñÀ÷2z
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¿ŒÍLJ3  ¡¹ñÀ÷2z
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
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
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
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
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
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
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
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
_/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
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ±àÕ€„3  ¸ïòÀ÷2|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÆŒÍLJ3  ¸ïòÀ÷2|
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
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
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
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
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
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
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
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
_/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
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¿àÕ€„3  „òòÀ÷2t
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÉŒÍLJ3  „òòÀ÷2t
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
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
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
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
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
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
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
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
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
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
_/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
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÊàÕ€„3  •ôòÀ÷2w
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÌŒÍLJ3  •ôòÀ÷2w
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
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
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
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
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
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
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
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
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
_/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
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/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
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
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>
/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|
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
_/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
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
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
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~
|
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>
/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
_/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
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
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
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
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
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>
/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
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
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
_/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>
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/additional_project_files.txtC
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
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
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
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
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
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
_/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 {
@override
Widget build(BuildContext context) {
final isDark = Theme.of(context).brightness == Brightness.dark;
return Scaffold(
backgroundColor: Colors.white,
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset('assets/images/logo.png', width: 150), // App Logo
// SizedBox(height: 20),
// CircularProgressIndicator(), // Loading indicator
],
backgroundColor: isDark ? null : Colors.white,
body: Container(
decoration: BoxDecoration(
color: isDark ? null : Colors.white,
image: isDark
? DecorationImage(
image: AssetImage('assets/splash_screen/background_splash_dark.png'), // 🔄 Add this background for dark mode
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 'package:flutter/material.dart';

View File

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

View File

@ -1,5 +1,6 @@
abstract class LogoAssetPath {
static const _basePath = 'assets/logos';
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',
'NotoKufi',
),
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF414042),
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF000000),
),
),
body: uaenumberWidget(),
@ -320,7 +320,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
},
)
: null,
contentPadding: EdgeInsets.symmetric(vertical: 12, horizontal: 18.0),
// contentPadding: EdgeInsets.symmetric(vertical: 12, horizontal: 18.0),
border: InputBorder.none,
// contentPadding:
// EdgeInsets.symmetric(vertical: 9, horizontal: 18.0),
@ -358,7 +358,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
myheight,
borderColor,
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,
Color borderColor, String colorPattern, mainTopic) {
Color borderColor, String colorPattern, mainTopic,isDarkTheme) {
subTopics.sort((a, b) =>
(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(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
buildCategoryTitle(subTopic['sub_topic'], borderColor),
buildCategoryTitle(subTopic['sub_topic'], isDarkTheme),
..._buildDataSetCards(subTopic['tile_data'] ?? [], myWidth,
borderColor, colorPattern, mainTopic),
],
@ -430,7 +430,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
return rows;
}
Widget buildCategoryTitle(String title, Color color) {
Widget buildCategoryTitle(String title, isDarkTheme) {
return Padding(
padding: const EdgeInsets.only(top: 1.2, bottom: 1.2),
child: Center(
@ -443,7 +443,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
),
fontSize: 16,
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) {
double myheight = MediaQuery.of(context).size.height;
double mywidth = MediaQuery.of(context).size.width;
final fcscBanner = Image.asset(
BannerAssetPath.fcscLogoLight,
height: 40,
);
final uaestat = Image.asset(
LogoAssetPath.uaeStat,
LogoAssetPath.uaeStatLight,
height: 50,
);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -205,19 +205,20 @@ class LoginRoute extends HookConsumerWidget {
}
// Function to send the reset password request
Future<void> forgotPasswordMail(String email) async {
Future<String> forgotPasswordMail(String email) async {
final url =
Uri.parse("${pb.baseUrl}api/auth/request-password-reset?email=$email");
try {
final response = await http.get(url);
final body = json.decode(response.body);
if (response.statusCode == 200) {
return; // Success, no action needed here
return body['status'] ?? 'Reset link sent successfully.';
} else {
final errorResponse = json.decode(response.body);
throw Exception(
errorResponse['message'] ?? "Failed to send reset email.");
errorResponse['status'] ?? "Failed to send reset email.");
}
} catch (error) {
throw Exception("Something went wrong. Please try again.");
@ -329,7 +330,7 @@ class LoginRoute extends HookConsumerWidget {
print('themeMode $themeMode');
}
Future<void> googleLogin(BuildContext context, WidgetRef ref,platform) async {
Future<void> oAuthGoogleAndAppleLogin(BuildContext context, WidgetRef ref,platform) async {
print(platform);
try {
final authData =
@ -342,6 +343,7 @@ class LoginRoute extends HookConsumerWidget {
print("✅ Login Successful");
print(authData.record);
final metaDetails = authData.meta;
final userDetails = authData.record;
final userId = userDetails?.id;
final email = userDetails?.data['email'] ?? '';
@ -354,8 +356,10 @@ class LoginRoute extends HookConsumerWidget {
print("Email: ${isProfileComplete}");
print("Email: ${loginCount}");
await saveUserId(userId!, loginCount);
// await getDeviceToken(context, id);
await loginCountApi(userId!);
await updateOAuthUserDetails(userId!, metaDetails);
// await saveUserId(userId!, loginCount);
// await getDeviceToken(context, userId);
await initializeTheme(context, ref, userId);
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) {
// final decodedToken = JwtDecoder.decode(ra.token);
// final expInSeconds = decodedToken['exp'];
@ -556,10 +625,10 @@ class LoginRoute extends HookConsumerWidget {
'إعادة تعيين كلمة المرور',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: locale?.languageCode == 'ar' ? 18 : 20,
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81),
fontWeight: FontWeight.w600),
@ -575,7 +644,7 @@ class LoginRoute extends HookConsumerWidget {
'Roboto',
'NotoKufi',
),
color: isDarkTheme ? Color(0xFFFFA100) : Colors.red,
color: Color(0xFFD83731),
),
labelText: context.translate(
'Email address',
@ -587,42 +656,40 @@ class LoginRoute extends HookConsumerWidget {
'NotoKufi',
),
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,
),
// Default Border
// Bottom border (no outline)
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: isDarkTheme ? Colors.white : const Color(0xFF898C81),
color: isDarkTheme
? Colors.white
: const Color(0xFF898C81),
width: 1,
),
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: isDarkTheme ? const Color(0xFF24B4FB) : Colors.deepPurple,
color: Color(0xFFB68A34),
width: 2,
),
),
errorBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: isDarkTheme ? const Color(0xFFFFA100) : Colors.red,
color: Color(0xFFD83731),
width: 1,
),
),
focusedErrorBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: isDarkTheme ? const Color(0xFFFFA100) : Colors.red,
color: Color(0xFFD83731),
width: 2,
),
),
),
),
),
@ -631,13 +698,12 @@ class LoginRoute extends HookConsumerWidget {
onPressed: Navigator.of(dialogCtx, rootNavigator: true).pop,
style: TextButton.styleFrom(
// backgroundColor: Colors.white, // Background color
foregroundColor: isDarkTheme ? Color(0xFF24B4FB) : Color(0xFF92722A), // Font (text) color
foregroundColor: Color(0xFF92722A), // Font (text) color
side: BorderSide(
color: isDarkTheme ? Color(0xFF24B4FB) : Color(0xFF92722A)
), // Border outline color
color: Color(0xFF92722A)), // Border outline color
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(8), // Optional: Rounded corners
BorderRadius.circular(8), // Optional: Rounded corners
),
padding: EdgeInsets.symmetric(
horizontal: 10, vertical: 10), // Optional: Padding
@ -647,10 +713,13 @@ class LoginRoute extends HookConsumerWidget {
'Return',
'يعود',
),
style: TextStyle( fontSize: context.translate(12, 10), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
style: TextStyle(
fontSize: context.translate(12, 10),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
),
),
ElevatedButton(
@ -662,10 +731,10 @@ class LoginRoute extends HookConsumerWidget {
);
},
style: ElevatedButton.styleFrom(
backgroundColor: isDarkTheme ? Color(0xFF24B4FB) : Color(0xFF92722A),
backgroundColor: Color(0xFFB68A34),
foregroundColor: Colors.white,
padding: EdgeInsets.symmetric(
horizontal: 10 , vertical: 10), // Optional: Adjusts size
horizontal: 10, vertical: 10), // Optional: Adjusts size
shape: RoundedRectangleBorder(
// Optional: Adds rounded corners
borderRadius: BorderRadius.circular(12),
@ -676,10 +745,13 @@ class LoginRoute extends HookConsumerWidget {
'Send Email',
'إرسال بريد إلكتروني',
),
style: TextStyle( fontSize: context.translate(12, 10), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
style: TextStyle(
fontSize: context.translate(12, 10),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
),
),
],
@ -689,21 +761,38 @@ class LoginRoute extends HookConsumerWidget {
if (email == null) return;
if (!context.mounted) return;
// await context.loaderWithErrorDialog(() async {
// await forgotPasswordMail(email);
// });
String status = '';
await context.loaderWithErrorDialog(() async {
await forgotPasswordMail(email);
status = await forgotPasswordMail(email);
});
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(
padding: EdgeInsets.zero,
@ -892,7 +981,7 @@ class LoginRoute extends HookConsumerWidget {
),
),
padding: const WidgetStatePropertyAll(
EdgeInsets.symmetric(vertical: 10.5),
EdgeInsets.symmetric(vertical: 16.5),
),
textStyle: WidgetStatePropertyAll(
TextStyle(
@ -901,7 +990,7 @@ class LoginRoute extends HookConsumerWidget {
'NotoKufi',
),
fontSize: locale?.languageCode == 'ar' ? 14 : 16,
fontWeight: FontWeight.w600,
fontWeight: FontWeight.w500,
),
),
backgroundColor: WidgetStatePropertyAll(
@ -929,15 +1018,15 @@ class LoginRoute extends HookConsumerWidget {
'Roboto',
'NotoKufi',
),
fontSize: locale?.languageCode == 'ar' ? 12 : 18,
fontSize: locale?.languageCode == 'ar' ? 12 : 16,
fontWeight: FontWeight.w500,
color: isDarkTheme ? Color(0xFF000000) : null,
color: isDarkTheme ? Colors.white : Colors.white,
),
),
6.horizontalSpace,
Icon(
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,
isObscurable: true,
),
// 6.verticalSpace,
6.verticalSpace,
Padding(
padding: EdgeInsets.zero,
child: Align(
@ -1003,7 +1092,7 @@ class LoginRoute extends HookConsumerWidget {
child: forgotPwBtn,
),
),
10.verticalSpace,
11.verticalSpace,
loginBtn,
],
),
@ -1146,14 +1235,14 @@ class LoginRoute extends HookConsumerWidget {
width: double.infinity,
child: OutlinedButton(
onPressed: () async {
googleLogin(context,ref,'google');
oAuthGoogleAndAppleLogin(context,ref,'google');
},
style: OutlinedButton.styleFrom(
side: const BorderSide(color: Color(0xFF000000)),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
padding: const EdgeInsets.symmetric(vertical: 12),
padding: const EdgeInsets.symmetric(vertical: 16.5),
backgroundColor: Colors.white,
foregroundColor: Colors.black,
textStyle: TextStyle(
@ -1186,14 +1275,14 @@ class LoginRoute extends HookConsumerWidget {
width: double.infinity,
child: OutlinedButton(
onPressed: () async {
googleLogin(context,ref,'apple');
oAuthGoogleAndAppleLogin(context,ref,'apple');
},
style: OutlinedButton.styleFrom(
side: const BorderSide(color: Color(0xFF000000)),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
padding: const EdgeInsets.symmetric(vertical: 12),
padding: const EdgeInsets.symmetric(vertical: 16.5),
backgroundColor: Colors.white,
foregroundColor: Colors.black,
textStyle: TextStyle(
@ -1231,7 +1320,7 @@ class LoginRoute extends HookConsumerWidget {
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
padding: const EdgeInsets.symmetric(vertical: 12),
padding: const EdgeInsets.symmetric(vertical: 16.5),
backgroundColor: Colors.white,
foregroundColor: Colors.black,
textStyle: TextStyle(
@ -1260,11 +1349,14 @@ class LoginRoute extends HookConsumerWidget {
),
),
);
final fcscBanner = Image.asset(
isDarkTheme
? BannerAssetPath.fcscLogoDark
: BannerAssetPath.fcscLogoLight,
height: 40,
final fcscBanner = Padding(
padding: const EdgeInsets.symmetric(horizontal: 50),
child: Image.asset(
isDarkTheme
? BannerAssetPath.fcscLogoDark
: BannerAssetPath.fcscLogoLight,
height: 30,
),
);
final screenWidth = MediaQuery.of(context).size.width;
final listViewHorizontalPadding =
@ -1283,8 +1375,16 @@ class LoginRoute extends HookConsumerWidget {
isOn: locale?.languageCode == 'en',
knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300,
pathColorWhenOff: Colors.grey.shade300,
pathColorWhenOn: Color(0xFFD9D9D9),
pathColorWhenOff: Color(0xFFD9D9D9),
knobTextStyleWhenOn: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
knobTextStyleWhenOff: TextStyle(
color: Color(0xFF010101),
fontWeight: FontWeight.bold,
),
onTap: () {
final formState = formKey.currentState;
ref.read(localeProvider.notifier).toggleLocale();
@ -1297,7 +1397,7 @@ class LoginRoute extends HookConsumerWidget {
},
),
),
34.verticalSpace,
20.verticalSpace,
helloAndPleaseLoginTexts,
40.verticalSpace,
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/domain/use_cases/language.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:tutorial_coach_mark/tutorial_coach_mark.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
}
void _showExitConfirmation(BuildContext context) {
void _showExitConfirmation(BuildContext context,isDarkTheme) {
double myheight = MediaQuery.of(context).size.height;
showDialog(
context: context,
@ -209,11 +210,12 @@ class _MyHomePageState extends ConsumerState<MyHomePage> {
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5.0), // Rounded corners
),
backgroundColor: isDarkTheme ? Colors.black : Colors.white,
contentPadding: EdgeInsets.zero,
title: Text(
context.translate('Log Out Confirmation', 'تأكيد تسجيل الخروج'),
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',
'NotoKufi',
),),
@ -249,7 +251,7 @@ class _MyHomePageState extends ConsumerState<MyHomePage> {
borderRadius: BorderRadius.circular(10.0),
),
side: BorderSide(
color: Color(0xFFAA8E83), // Border color
color: Color(0xFFB68A34), // Border color
width: 1,
),
),
@ -260,7 +262,7 @@ class _MyHomePageState extends ConsumerState<MyHomePage> {
'Roboto',
'NotoKufi',
),
color: Color(0xFFAA8E83),
color: Color(0xFFB68A34),
fontSize: 16,
),
),
@ -272,7 +274,7 @@ class _MyHomePageState extends ConsumerState<MyHomePage> {
child: TextButton(
onPressed: () => logout(context),
style: TextButton.styleFrom(
backgroundColor: Color(0xFFAA8E83), // Background color
backgroundColor: Color(0xFFB68A34), // Background color
foregroundColor: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
@ -344,18 +346,23 @@ class _MyHomePageState extends ConsumerState<MyHomePage> {
Widget build(BuildContext context) {
double myheight = MediaQuery.of(context).size.height;
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(
canPop: false, // Allow back navigation only if not login screen
onPopInvokedWithResult: (didPop, result) {
if (didPop) return;
_showExitConfirmation(context); // Show exit confirmation dialog
_showExitConfirmation(context,isDarkTheme); // Show exit confirmation dialog
},
child: BaseScaffold(
title: Center(
child: SizedBox(
height: myheight / 5,
width: mywidth / 3,
child: Image(image: AssetImage('assets/logos/uae_stat.png')))),
child: Image(image: AssetImage(isDarkTheme ? LogoAssetPath.uaeStatDark : LogoAssetPath.uaeStatLight)))),
body: EconomyStatsWidget(),
),
);
@ -1335,6 +1342,7 @@ class EconomyStatsState extends ConsumerState<EconomyStatsWidget> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 10),
RoundedCornerContainer(
key: mainTopic['main_topic'] == firstMainTopic
? cardTopicKey
@ -1596,7 +1604,7 @@ class InfoCard extends StatelessWidget {
child: Container(
height: myheight / 10.9,
width: mywidth / 4,
width: mywidth / 5,
margin: const EdgeInsets.symmetric(horizontal: 8),
// padding: const EdgeInsets.all(10),

View File

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

View File

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

View File

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

View File

@ -666,14 +666,14 @@ class _FeedbackFormState extends ConsumerState<FeedbackForm>
'Roboto',
'NotoKufi',
),
color: isDarkTheme ? Colors.black : Colors.white,
color: Colors.white,
),
),
6.horizontalSpace,
Icon(
Icons.chevron_right_outlined,
// color: Colors.white,
color: isDarkTheme ? Colors.black : Colors.white,
color: Colors.white,
),
],
),
@ -1231,8 +1231,16 @@ class LangToggle extends ConsumerWidget {
},
knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300,
pathColorWhenOff: Colors.grey.shade300,
pathColorWhenOn: Color(0xFFD9D9D9),
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:uae_stat/config/api_config.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/domain/use_cases/language.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/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 ManageUserRouter extends ConsumerStatefulWidget {
late final Widget title;
@ -59,8 +62,8 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
await _pb.admins
.authWithPassword('pb@venbainfotech.com', 'pb@venbainfotech.com');
final result = await _pb.collection('users').getFullList(
filter: 'role="user"',
);
filter: 'role="user"',
);
setState(() {
userData = result.map((record) {
@ -106,10 +109,10 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
}
void _sort<T>(
Comparable<T>? Function(User user) getField,
int columnIndex,
bool ascending,
) {
Comparable<T>? Function(User user) getField,
int columnIndex,
bool ascending,
) {
setState(() {
_sortColumnIndex = columnIndex;
_isAscending = ascending;
@ -158,9 +161,9 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
AppLocalizations.of(context)!.status_success,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
'Roboto',
'NotoKufi',
)),
),
),
);
@ -172,14 +175,14 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
context.translate(
'Error updating status: $e', '$e خطأ في تحديث الحالة: '),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
)),
context.translate(
'Error updating status: $e', '$e خطأ في تحديث الحالة: '),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
)),
);
}
}
@ -199,7 +202,7 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
borderRadius: BorderRadius.circular(5.0), // Rounded corners
),
contentPadding:
EdgeInsets.zero, // Ensure no padding issues with close icon
EdgeInsets.zero, // Ensure no padding issues with close icon
content: Stack(
children: [
Padding(
@ -230,7 +233,7 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
'NotoKufi',
),
fontWeight:
FontWeight.bold, // Makes newStatus bold
FontWeight.bold, // Makes newStatus bold
fontSize: 18,
color: Color(0xFF898C81),
),
@ -299,11 +302,11 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
},
style: TextButton.styleFrom(
backgroundColor:
Color(0xFFAA8E83), // Set background color
Color(0xFFAA8E83), // Set background color
foregroundColor: Colors.white,
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(10.0), // Set text color
BorderRadius.circular(10.0), // Set text color
),
),
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 {
final localeCode = next?.languageCode ?? 'en'; // Default to 'en' if null
setState(() {
isLoading = true;
});
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 = {
'Approved': AppLocalizations.of(context)!.approved,
'Denied': AppLocalizations.of(context)!.denied,
@ -356,359 +400,321 @@ class _ManageUserRouterState extends ConsumerState<ManageUserRouter> {
context.go('/myhomepage'); // Show exit confirmation dialog
},
child: BaseScaffold(
backgroundColor: isDarkTheme ? Colors.black : Colors.white,
appbarColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
// title: Text("Manage User"),
title: Text(
AppLocalizations.of(context)!.manage_user,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
'Roboto',
'NotoKufi',
)),
),
body: isLoading
? Container(
color: Color(0x98FFFCE5), // Semi-transparent background
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
margin: EdgeInsets.symmetric(
horizontal: 40), // Left & Right space
child: LinearProgressIndicator(
minHeight: 5, // Adjust thickness
backgroundColor:
Colors.grey[100], // Optional: Background color
valueColor: AlwaysStoppedAnimation<Color>(
Color(0xFFAA8E83)), // Loader color
),
),
],
color: Color(0x98FFFCE5), // Semi-transparent background
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
margin: EdgeInsets.symmetric(
horizontal: 40), // Left & Right space
child: LinearProgressIndicator(
minHeight: 5, // Adjust thickness
backgroundColor:
Colors.grey[100], // Optional: Background color
valueColor: AlwaysStoppedAnimation<Color>(
Color(0xFFAA8E83)), // Loader color
),
)
),
],
),
)
: SingleChildScrollView(
child: Padding(
padding:
const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0),
child: Column(
children: [
// TextField(
// decoration: InputDecoration(
// prefixIcon: const Icon(Icons.search),
// hintText: 'Search',
// border: OutlineInputBorder(
// borderRadius: BorderRadius.all(Radius.circular(20)),
// ),
// ),
// onChanged: filterUsers,
// ),
// Container(
// height: 40,
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.circular(30.0),
// border: Border.all(width: 2, color: Color(0xFFAA8E83)),
// ),
// child: TextField(
// 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(
padding:
const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0),
child: Column(
children: [
Container(
height: 40,
decoration: BoxDecoration(
color: isDarkTheme ? Color(0xFF000000) : Colors.white,
borderRadius: BorderRadius.circular(5.0),
border: Border.all(width: 2, color: Color(0xFFA0A0A0)),
),
child: Padding(
padding: EdgeInsets.only(left: 5.0),
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.search,
hintStyle: TextStyle(
color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
fontFamily: context.translate('Roboto', 'NotoKufi'),
fontSize: 18,
// height: 1.8,
),
child: Padding(
padding: EdgeInsets.only(left: 12.0),
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.search,
hintStyle: TextStyle(
color: Color(0xFFAA8E83),
fontFamily:
context.translate('Roboto', 'NotoKufi'),
fontSize: 14,
height: 2.5, // Helps with vertical alignment
),
prefixIconConstraints: BoxConstraints(
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,
prefixIconConstraints: BoxConstraints(
maxWidth: 42,
maxHeight: 42,
),
prefixIcon: Container(
padding: EdgeInsets.only(right: 5, left: 5),
alignment: Alignment.center,
child: SvgPicture.asset(
MiscIconAssetPath.Search,
semanticsLabel: 'Search',
colorFilter: ColorFilter.mode(Color(0xFFAA8E83), BlendMode.srcIn),
height: 18,
width: 18,
),
),
// contentPadding: EdgeInsets.symmetric(vertical: 12, horizontal: 18.0),
border: InputBorder.none,
),
SizedBox(height: myheight / 40),
filteredUserData.isEmpty
? Center(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(height: myheight / 5),
onChanged: filterUsers,
),
),
),
SizedBox(height: myheight / 40),
filteredUserData.isEmpty
? Center(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(height: myheight / 5),
// Icon(Icons.search,
// size: 60, color: Colors.grey),
Image.asset(
MiscIconAssetPath.group,
width: 60,
height: 60,
// Icon(Icons.search,
// size: 60, color: Colors.grey),
Image.asset(
MiscIconAssetPath.group,
width: 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',
),
SizedBox(height: 15),
// Space between icon and text
Text(
AppLocalizations.of(context)!
.no_result_found,
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(
fontFamily:
context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 24,
fontWeight: FontWeight.bold,
color: Colors.grey[700],
color: getStatusColor(
status.key),
),
),
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
.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(),
onChanged: (newStatus) {
print(user);
if (newStatus != null) {
_showConfirmationDialog(
user,
newStatus,
statusOptions[
newStatus]!,
);
}
},
),
),
],
],
);
}).toList(),
),
),
),
),
],
),
),
),
),
);
}
@ -729,4 +735,4 @@ class User {
required this.registrationDate,
this.status = 'Pending',
});
}
}

View File

@ -286,6 +286,34 @@ class _NotificationPageState extends ConsumerState<NotificationPage> {
{'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
List<Map<String, dynamic>> filteredNotifications = selectedTabIndex == 0
? notifications
@ -423,7 +451,7 @@ class TabBarHeader extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
color: isDarkTheme ? Color(0xFF111111) : Colors.grey[200],
color: isDarkTheme ? Color(0xFF111111) : Colors.white,
padding: const EdgeInsets.symmetric(vertical: 8),
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
@ -440,8 +468,8 @@ class TabBarHeader extends StatelessWidget {
foregroundColor:
MaterialStateProperty.resolveWith((states) {
return selectedIndex == index
? Color(0xFF985400)
: Colors.grey[700];
? isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFFB68A34)
: isDarkTheme ? Color(0xFFBBBBBB) : Color(0xFF898C81);
}),
),
child: Text(

View File

@ -179,7 +179,7 @@ class _GetStartedState extends ConsumerState<GetStarted> {
),
),
),
SizedBox(height: 10),
// SizedBox(height: 10),
// SizedBox(
// width: MediaQuery.of(context).size.width,
// height: MediaQuery.of(context).size.height * 0.36,
@ -188,51 +188,53 @@ class _GetStartedState extends ConsumerState<GetStarted> {
// fit: BoxFit.contain,
// ),
// ),
Padding(padding: const EdgeInsets.all(30.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
context.translate(
'1. Download the app from the App Store or Google Play Store.',
'1 .قم بتحميل التطبيق من متجر التطبيقات (Appstore) أو متجر جوجل بلاي (Google Play)..',
Padding(
padding: const EdgeInsets.all(30.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
context.translate(
'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
softWrap: true,
style: TextStyle(
color: isDarkTheme ? Colors.white : Colors.black54,
SizedBox(
height: 20,
),
),
SizedBox(
height: 20,
),
Text(
context.translate(
'2. Log in to unlock advanced features or continue as a guest.',
'2 .قم بتسجيل الدخول لفتح الميزات المتقدمة أو الاستمرار كضيف.',
Text(
context.translate(
'2. Log in to unlock advanced features or continue as a guest.',
'2 .قم بتسجيل الدخول لفتح الميزات المتقدمة أو الاستمرار كضيف.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
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(
height: 20,
),
),
SizedBox(
height: 20,
),
Text(
context.translate(
'3. Navigate through categories, explore metrics, and bookmark essential information.',
'3 .تنقل عبر الفئات، واستكشف المقاييس، وقم بإضافة إشارة مرجعية إلى المعلومات الأساسية.',
Text(
context.translate(
'3. Navigate through categories, explore metrics, and bookmark essential information.',
'3 .تنقل عبر الفئات، واستكشف المقاييس، وقم بإضافة إشارة مرجعية إلى المعلومات الأساسية.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
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(
// 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 '../../../custom_drawer_routes.dart';
class AppFeatures extends ConsumerStatefulWidget {
const AppFeatures({super.key});
@ -176,7 +175,7 @@ class _AppFeaturesState extends ConsumerState<AppFeatures> {
),
),
),
SizedBox(height: 20,),
// SizedBox(height: 20,),
// SizedBox(
// width: MediaQuery.of(context).size.width,
// height: MediaQuery.of(context).size.height * 0.36,
@ -185,376 +184,391 @@ class _AppFeaturesState extends ConsumerState<AppFeatures> {
// fit: BoxFit.contain,
// ),
// ),
Padding(padding: const EdgeInsets.all(30.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
context.translate('1. Comprehensive Statistics:',
'1. رؤى مستندة إلى البيانات '),
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: 7.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 6.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme ? Colors.white : Colors.black,
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate(
'Access detailed datasets across categories such as ',
'الوصول إلى مجموعات بيانات تفصيلية عبر فئات مثل الاقتصاد، البيئة، الاجتماعية، وغيرها.',
),
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
fontSize: 16,
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
children: <TextSpan>[
TextSpan(
text: context.translate(
'Economy, Environment, Social, ', ''),
style: TextStyle(
fontWeight: FontWeight.bold,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
),
TextSpan(
text: context.translate('and more.', ''),
style: TextStyle(
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,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Explore statistics presented as smart metrics, graphs, and charts for better understanding.',
'استكشاف الإحصائيات المقدمة على هيئة مقاييس ذكية ورسوم بيانية ومخططات لتعزيز الفهم.',
),
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',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 7.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(
'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
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
],
),
),
SizedBox(height: 30),
Text(
context.translate('3. Interactive Visualizations:',
'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: 7.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(
'View trends and relationships with interactive graphs and charts, including bar graphs, line charts, and more.',
'عرض الاتجاهات والعلاقات باستخدام الرسوم البيانية التفاعلية مثل المخططات الشريطية، المخططات الخطية، وغيرها.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
],
),
),
SizedBox(
height: 30,
),
Text(
context.translate('4. Secure User Access:',
'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: 7.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),
Expanded(
child: Text(
context.translate(
'Available only to registered users whose accounts have been approved by an admin.',
'متاح فقط للمستخدمين المسجلين الذين تمت الموافقة على حساباتهم من قبل المسؤول.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
), // Space between bullet and text
],
),
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(
'Login ensures secure access to sensitive statistical information.',
'يضمن تسجيل الدخول الوصول الآمن إلى المعلومات الإحصائية الحساسة.',
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
],
),
),
SizedBox(
height: 30,
),
Text(
context.translate('5. Profile Customization:',
'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: 7.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),
Expanded(
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
],
),
],
),
),
],
),)
Padding(
padding: const EdgeInsets.all(30.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
context.translate('1. Comprehensive Statistics:',
'1. رؤى مستندة إلى البيانات '),
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: 7.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 6.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: isDarkTheme
? Colors.white
: Colors.black,
),
), // Bullet point
SizedBox(
width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate(
'Access detailed datasets across categories such as ',
'الوصول إلى مجموعات بيانات تفصيلية عبر فئات مثل الاقتصاد، البيئة، الاجتماعية، وغيرها.',
),
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
fontSize: 16,
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
children: <TextSpan>[
TextSpan(
text: context.translate(
'Economy, Environment, Social, ',
''),
style: TextStyle(
fontWeight: FontWeight.bold,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
),
TextSpan(
text: context.translate(
'and more.', ''),
style: TextStyle(
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,
size: 5,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
),
), // Bullet point
SizedBox(
width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Explore statistics presented as smart metrics, graphs, and charts for better understanding.',
'استكشاف الإحصائيات المقدمة على هيئة مقاييس ذكية ورسوم بيانية ومخططات لتعزيز الفهم.',
),
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',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 7.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(
'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
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
],
),
),
SizedBox(height: 30),
Text(
context.translate('3. Interactive Visualizations:',
'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: 7.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(
'View trends and relationships with interactive graphs and charts, including bar graphs, line charts, and more.',
'عرض الاتجاهات والعلاقات باستخدام الرسوم البيانية التفاعلية مثل المخططات الشريطية، المخططات الخطية، وغيرها.',
),
textAlign:
TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
],
),
),
SizedBox(
height: 30,
),
Text(
context.translate('4. Secure User Access:',
'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: 7.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),
Expanded(
child: Text(
context.translate(
'Available only to registered users whose accounts have been approved by an admin.',
'متاح فقط للمستخدمين المسجلين الذين تمت الموافقة على حساباتهم من قبل المسؤول.',
),
textAlign:
TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
), // Space between bullet and text
],
),
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(
'Login ensures secure access to sensitive statistical information.',
'يضمن تسجيل الدخول الوصول الآمن إلى المعلومات الإحصائية الحساسة.',
),
textAlign:
TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
),
),
),
],
),
],
),
),
SizedBox(
height: 30,
),
Text(
context.translate('5. Profile Customization:',
'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: 7.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),
Expanded(
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(
height: 20,
// width: MediaQuery.of(context).size.width,
// height: MediaQuery.of(context).size.height * 0.36,
// child: Image.asset(
// 'assets/user_guide/changePassword.png',
// fit: BoxFit.contain,
// ),
),
Padding(padding: const EdgeInsets.all(30.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
context.translate(
'Changing your password helps keep your account secure. Follow these steps to update your password:',
'يُساعد تغيير كلمة المرور في الحفاظ على أمان حسابك. اتبع هذه الخطوات لتحديث كلمة مرور',
),
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',
// SizedBox(
// height: 20,
//
// ),
Padding(
padding: const EdgeInsets.all(30.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
context.translate(
'Changing your password helps keep your account secure. Follow these steps to update your password:',
'يُساعد تغيير كلمة المرور في الحفاظ على أمان حسابك. اتبع هذه الخطوات لتحديث كلمة مرور',
),
style: TextStyle(
color:
isDarkTheme ? Colors.white : Color(0xFF898C81)),
),
fontSize: 22,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Text(
context.translate(
'1. Access the Change Password Page:',
'1. الدخول إلى صفحة تغيير كلمة المرور:',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
SizedBox(height: 12),
Text(
context.translate('Steps to Change Password',
'خطوات تغيير كلمة المرور '),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 22,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
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,
SizedBox(height: 8),
Text(
context.translate(
'1. Access the Change Password Page:',
'1. الدخول إلى صفحة تغيير كلمة المرور:',
),
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: [
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(
'From the Profile page, tap on the ',
'من صفحة الملف الشخصي، انقر على رابط ',
),
style: TextStyle(
fontSize: 16,
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(0xFF898C81),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
: Color(0xFF414042),
),
children: <TextSpan>[
TextSpan(
), // Bullet point
SizedBox(
width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate(
'"Change Password"',
'"تغيير كلمة المرور" ',
'From the Profile page, tap on the ',
'من صفحة الملف الشخصي، انقر على رابط ',
),
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 16,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
: Color(0xFF898C81),
fontFamily: context.translate(
'Roboto',
'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,
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 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(
'2. Enter Old Password:',
'2. إدخال كلمة المرور القديمة:',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
fontWeight: FontWeight.w600,
),
],
),
),
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,
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
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(
fontSize: 16,
// color: Color(0xFF898C81),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
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(0xFF898C81),
: Color(0xFF414042),
),
children: <TextSpan>[
TextSpan(
text: context.translate('Save ', '"حفظ".'),
), // 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,
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(
fontWeight: FontWeight.w600,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
fontSize: 16,
// color: Color(0xFF898C81),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
),
TextSpan(
text: context.translate('button', ''),
style: TextStyle(
color: isDarkTheme
? Colors.white
: 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,
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,
SizedBox(height: 8),
Text(
context.translate(
'6. Re-Login:', '6. إعادة تسجيل الدخول'),
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: [
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(
'Log in again using your new password to continue using the app',
'قم بتسجيل الدخول مرة أخرى باستخدام كلمة المرور الجديدة للاستمرار في استخدام التطبيق.',
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(
'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/domain/use_cases/language.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/routes/drawer_routes/custom_drawer_routes.dart';
@ -182,197 +183,204 @@ class _HowUseTheAppState extends ConsumerState<HowUseTheApp> {
),
),
),
SizedBox(
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,
// ),
),
// SizedBox(
// height: 10,
// ),
Padding(
padding: const EdgeInsets.all(30.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
context.translate(
'1. Registration and Approval:',
'1. التسجيل والموافقة:',
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
context.translate(
'1. Registration and Approval:',
'1. التسجيل والموافقة:',
),
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),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Sign up for the app and wait for admin approval.',
'قم بالتسجيل في التطبيق وانتظر الموافقة من الإدارة.',
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),
),
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color:
isDarkTheme ? Colors.white : Color(0xFF898C81)),
),
),
],
),
SizedBox(height: 8),
Text(
context.translate(
'2. Login and Navigation:',
'2. تسجيل الدخول والتصفح:',
),
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.',
'بعد الموافقة، قم بتسجيل الدخول للوصول إلى التطبيق. تصفح الفئات المختلفة على الشاشة الرئيسية.',
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
context.translate(
'Sign up for the app and wait for admin approval.',
'قم بالتسجيل في التطبيق وانتظر الموافقة من الإدارة.',
),
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)),
),
),
],
),
SizedBox(height: 8),
Text(
context.translate(
'3. Access Data:',
'3. الوصول إلى البيانات:',
],
),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
SizedBox(height: 8),
Text(
context.translate(
'2. Login and Navigation:',
'2. تسجيل الدخول والتصفح:',
),
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),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), // 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.',
'قم بالتعمق في الفئات المحددة مثل "الاقتصاد" أو "البيئة" لعرض مؤشرات الأداء الرئيسية والرؤى المرئية بالتفصيل.',
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),
),
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.',
'احفظ الإحصائيات المهمة للرجوع إليها بسهولة.',
), // 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)),
),
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/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 {
const Purpose({super.key});
@ -182,133 +183,139 @@ class _PurposeState extends ConsumerState<Purpose> {
),
),
),
SizedBox(
height: 10,
// width: MediaQuery.of(context).size.width,
// height: MediaQuery.of(context).size.height * 0.36,
// child: Image.asset(
// 'assets/user_guide/purpose.png',
// fit: BoxFit.contain,
// ),
),
Padding(padding: const EdgeInsets.all(30.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
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(
'Provide ',
'توفير الإحصائيات الرسمية لدولة الإمارات بشكل سهل الوصول.',
),
style: TextStyle(
color:
isDarkTheme ? Colors.white : Color(0xFF898C81),
fontSize: 16,
fontFamily: context.translate(
'Roboto',
'NotoKufi',
// SizedBox(
// height: 10,
//
// ),
Padding(
padding: const EdgeInsets.all(30.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
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(
'Provide ',
'توفير الإحصائيات الرسمية لدولة الإمارات بشكل سهل الوصول.',
),
),
children: <TextSpan>[
TextSpan(
text:
context.translate('official statistics ', ''),
style: TextStyle(
fontWeight: FontWeight.bold,
color: isDarkTheme
? Colors.white
: Color(0xFF414042),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
style: TextStyle(
color: isDarkTheme
? Colors.white
: Color(0xFF898C81),
fontSize: 16,
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
TextSpan(
text: context.translate(
'on the UAE in an accessible format.', ''),
style: TextStyle(
children: <TextSpan>[
TextSpan(
text: context.translate(
'official statistics ', ''),
style: TextStyle(
fontWeight: FontWeight.bold,
color: isDarkTheme
? 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(
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(
'Support decision-making and research with reliable, up-to-date data.',
'دعم اتخاذ القرارات والبحوث من خلال بيانات موثوقة ومحدثة.',
],
),
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
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.',
'تمكين المستخدمين من التفاعل مع البيانات بصريًا من خلال الرسوم البيانية والمقاييس.',
), // 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
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(
'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/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 {
const StayUpdate({super.key});
@ -179,15 +180,9 @@ class _StayUpdateState extends ConsumerState<StayUpdate> {
),
),
),
SizedBox(
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,
// ),
),
// SizedBox(
// height: 10,
// ),
Padding(
padding: const EdgeInsets.all(30),
child: Row(
@ -211,14 +206,14 @@ class _StayUpdateState extends ConsumerState<StayUpdate> {
textAlign: TextAlign.justify, // Align the text
softWrap: true,
style: TextStyle(
color:
isDarkTheme ? Colors.white : Color(0xFF898C81)),
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/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.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: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 {
const WhoUseTheApp({super.key});
@ -181,7 +182,7 @@ class _WhoUseTheAppState extends ConsumerState<WhoUseTheApp> {
),
),
),
SizedBox(height: 10),
// SizedBox(height: 10),
// SizedBox(
// width: MediaQuery.of(context).size.width,
// height: MediaQuery.of(context).size.height * 0.36,
@ -192,107 +193,116 @@ class _WhoUseTheAppState extends ConsumerState<WhoUseTheApp> {
// ),
Padding(
padding: const EdgeInsets.all(30.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
context.translate(
'This app is intended for:', 'يستهدف هذا التطبيق:'),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
context.translate(
'This app is intended for:', 'يستهدف هذا التطبيق:'),
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'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),
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(
'Government officials requiring UAE statistics for decision-making.',
'المسؤولين الحكوميين الذين يحتاجون إلى إحصاءات دولة الإمارات العربية المتحدة لاتخاذ القرارات.',
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
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(
'Business professionals and researchers analyzing market trends.',
'المتخصصين في مجال الأعمال والباحثين الذين يقومون بتحليل اتجاهات السوق.',
), // 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
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.',
'الطلاب والمعلمين الذين يحتاجون إلى بيانات موثوقة للدراسة والتعليم.',
],
),
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(
'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/components/indicators/locale_provider.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 {
const aboutTheApp({super.key});
@ -149,7 +149,7 @@ class _aboutTheAppState extends ConsumerState<aboutTheApp> {
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: Colors.grey.shade300,
color: isDarkTheme ? Color(0xFF898C81) : Color(0xFFDEDEDE),
width: 0.5,
), // Grey bottom line
),
@ -173,7 +173,13 @@ class _aboutTheAppState extends ConsumerState<aboutTheApp> {
),
trailing: Icon(
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(
border: Border(
bottom: BorderSide(
color: Colors.grey.shade300,
color: isDarkTheme ? Color(0xFF898C81) : Color(0xFFDEDEDE),
width: 0.5,
), // Grey bottom line
),
@ -205,12 +211,12 @@ class _aboutTheAppState extends ConsumerState<aboutTheApp> {
),
trailing: Icon(
Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
),
shape: Border(
bottom: BorderSide(
color: Colors.black,
width: 3,
color: Color(0xFFDEDEDE),
width: 1,
), // 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/components/indicators/locale_provider.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 {
const FAQPage({super.key});
@ -119,6 +119,7 @@ class _FAQPageState extends ConsumerState<FAQPage> {
return BaseScaffold(
dividerColor: Colors.grey[300],
showDivider: true,
showBackButton: true,
// appbarColor: Colors.white,
backgroundColor: isDarkTheme ? Colors.black : Colors.white,
@ -133,7 +134,7 @@ class _FAQPageState extends ConsumerState<FAQPage> {
'NotoKufi',
),
fontSize: 22,
color: isDarkTheme ? Colors.white : Colors.black ,
color: isDarkTheme ? Colors.white : Colors.black,
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
@ -935,7 +936,8 @@ class _QuestionAnswerCardState extends State<QuestionAnswerCard> {
trailing: Icon(isExpanded
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down),
iconColor: widget.isDarkTheme ? Colors.white : Color(0xFF898C81),
iconColor:
widget.isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
onTap: () {
setState(() {
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/components/indicators/locale_provider.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';
class UsingFeatures extends ConsumerStatefulWidget {
@ -136,7 +137,7 @@ class _UsingFeaturesState extends ConsumerState<UsingFeatures> {
'Roboto',
'NotoKufi',
),
color: isDarkTheme ? Colors.white : Colors.black,
color: isDarkTheme ? Colors.white : Colors.black,
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
@ -173,7 +174,13 @@ class _UsingFeaturesState extends ConsumerState<UsingFeatures> {
),
trailing: Icon(
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(
Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
),
shape: Border(
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(
Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
),
shape: Border(
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(
Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
),
shape: Border(
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(
Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
),
shape: Border(
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(
Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
),
shape: Border(
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(
Icons.keyboard_arrow_right,
color: isDarkTheme ? Colors.white : Color(0xFF414042),
color: isDarkTheme ? Color(0xFF898C81) : Color(0xFF898C81),
),
shape: Border(
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/toggle_lang_service.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/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.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';
class Userguide extends ConsumerStatefulWidget {
@ -34,9 +35,9 @@ class _UserguideState extends ConsumerState<Userguide> {
{
'routePath': 'features',
'color': Color(0xFFAA8E83),
'text': 'Features',
'text': 'Key Features',
'icon': 'pajamas:issue-type-feature',
'text-ar': 'الميزات'
'text-ar': 'الميزات الرئيسية'
},
{
'routePath': 'faq',
@ -52,7 +53,6 @@ class _UserguideState extends ConsumerState<Userguide> {
initState() {
super.initState();
print('123456789');
}
@override
@ -107,14 +107,12 @@ class _UserguideState extends ConsumerState<Userguide> {
child: BaseScaffold(
showDivider: true,
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,
title: Text(
AppLocalizations.of(context)!.guide_title,
style: TextStyle(
color: isDarkTheme ? Colors.white : Color(0xFF414042)
)
),
title: Text(AppLocalizations.of(context)!.guide_title,
style: TextStyle(
color: isDarkTheme ? Colors.white : Color(0xFF414042))),
body: Container(
color: isDarkTheme ? Color(0xFF111111) : Colors.white,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 20),
@ -181,7 +179,7 @@ class _HoverContainerState extends ConsumerState<HoverContainer> {
width: screenWidth * 0.30,
margin: EdgeInsets.all(1),
decoration: BoxDecoration(
color: isDarkTheme ? Color(0xFF111111) : Colors.white,
color: isDarkTheme ? Color(0xFF111111) : Colors.white,
borderRadius: BorderRadius.circular(10),
boxShadow: isHovered

View File

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

View File

@ -770,8 +770,16 @@ class LangToggle extends ConsumerWidget {
},
knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300,
pathColorWhenOff: Colors.grey.shade300,
pathColorWhenOn: Color(0xFFD9D9D9),
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
uses-material-design: true
assets:
- assets/dark_bg.png
- assets/user_guide_videos/
- assets/logos/
- assets/logos/from_alsaray/
@ -166,6 +165,7 @@ flutter:
- assets/competitiveness/
- assets/icons/uae_numbers/ShareDark.png
- assets/icons/uae_numbers/ShareLight.png
- assets/icons/misc/successMsg.png
fonts:
- family: Segoe