OAuth added
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
|
Before Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 826 B After Width: | Height: | Size: 876 B |
BIN
assets/icons/misc/successMsg.png
Normal file
|
After Width: | Height: | Size: 894 B |
BIN
assets/logos/uae_stat_dark.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
BIN
assets/splash_screen/FCSCLogo_dark.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 84 KiB |
BIN
assets/splash_screen/background_splash_dark.png
Normal file
|
After Width: | Height: | Size: 553 KiB |
@ -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';
|
||||
|
||||
@ -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';
|
||||
}
|
||||
|
||||
@ -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';
|
||||
}
|
||||
|
||||
@ -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),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@ -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,
|
||||
);
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
),
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -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: () {
|
||||
|
||||
@ -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,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -63,7 +63,7 @@ class ThemedAppBar extends ConsumerWidget {
|
||||
),
|
||||
);
|
||||
final logo = Image.asset(
|
||||
LogoAssetPath.uaeStat,
|
||||
LogoAssetPath.uaeStatLight,
|
||||
height: 36,
|
||||
);
|
||||
final title = titleText == null
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@ -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: () {
|
||||
|
||||
@ -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,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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',
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -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(
|
||||
|
||||
@ -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,
|
||||
// ),
|
||||
|
||||
@ -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
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@ -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),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),)
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@ -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)),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@ -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)),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@ -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)),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@ -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)),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@ -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
|
||||
),
|
||||
),
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||