Google and Apple OAthu
This commit is contained in:
parent
5fbc97c1fb
commit
fe712c6708
@ -2,27 +2,27 @@ C/C++ Structured Log}
|
|||||||
{
|
{
|
||||||
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/additional_project_files.txtC
|
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint …Žœÿƒ3 ¡¹ñÀ÷2z
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint <EFBFBD>àÕ€„3 ¡¹ñÀ÷2z
|
||||||
x
|
x
|
||||||
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/android_gradle_build.json …Žœÿƒ3€ £¹ñÀ÷2
|
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/android_gradle_build.json <EFBFBD>àÕ€„3€ £¹ñÀ÷2
|
||||||
}
|
}
|
||||||
{/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/android_gradle_build_mini.json …Žœÿƒ3ƒ ¥¹ñÀ÷2l
|
{/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/android_gradle_build_mini.json <EFBFBD>àÕ€„3ƒ ¥¹ñÀ÷2l
|
||||||
j
|
j
|
||||||
h/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build.ninja …Žœÿƒ3êÌ Ž¹ñÀ÷2p
|
h/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build.ninja <EFBFBD>àÕ€„3êÌ Ž¹ñÀ÷2p
|
||||||
n
|
n
|
||||||
l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build.ninja.txt …Žœÿƒ3u
|
l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build.ninja.txt <EFBFBD>àÕ€„3u
|
||||||
s
|
s
|
||||||
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build_file_index.txt …Žœÿƒ3
_ ¦¹ñÀ÷2v
|
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/build_file_index.txt <EFBFBD>àÕ€„3
_ ¦¹ñÀ÷2v
|
||||||
t
|
t
|
||||||
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/compile_commands.json …Žœÿƒ3z
|
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/compile_commands.json <EFBFBD>àÕ€„3z
|
||||||
x
|
x
|
||||||
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/compile_commands.json.bin …Žœÿƒ3 €
|
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/compile_commands.json.bin <EFBFBD>àÕ€„3 €
|
||||||
~
|
~
|
||||||
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/metadata_generation_command.txt …Žœÿƒ3
|
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/metadata_generation_command.txt <EFBFBD>àÕ€„3
|
||||||
ö ¦¹ñÀ÷2s
|
ö ¦¹ñÀ÷2s
|
||||||
q
|
q
|
||||||
o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/prefab_config.json …Žœÿƒ3
( ¦¹ñÀ÷2x
|
o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/prefab_config.json <EFBFBD>àÕ€„3
( ¦¹ñÀ÷2x
|
||||||
v
|
v
|
||||||
t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/symbol_folder_index.txt …Žœÿƒ3
k ¦¹ñÀ÷2c
|
t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/arm64-v8a/symbol_folder_index.txt <EFBFBD>àÕ€„3
k ¦¹ñÀ÷2c
|
||||||
a
|
a
|
||||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt …Žœÿƒ3
¤ òÑÞ€á2
|
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt <EFBFBD>àÕ€„3
¤ òÑÞ€á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
|
{/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint €<EFBFBD>œÿƒ3 ¸ïòÀ÷2|
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ±àÕ€„3 ¸ïòÀ÷2|
|
||||||
z
|
z
|
||||||
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/android_gradle_build.json €<EFBFBD>œÿƒ3„ ºïòÀ÷2<C3B7>
|
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/android_gradle_build.json ±àÕ€„3„ ºïòÀ÷2<C3B7>
|
||||||
|
|
||||||
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/android_gradle_build_mini.json €<EFBFBD>œÿƒ3‡ »ïòÀ÷2n
|
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/android_gradle_build_mini.json ±àÕ€„3‡ »ïòÀ÷2n
|
||||||
l
|
l
|
||||||
j/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build.ninja €<EFBFBD>œÿƒ3öÌ ªïòÀ÷2r
|
j/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build.ninja ±àÕ€„3öÌ ªïòÀ÷2r
|
||||||
p
|
p
|
||||||
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build.ninja.txt €<EFBFBD>œÿƒ3w
|
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build.ninja.txt ±àÕ€„3w
|
||||||
u
|
u
|
||||||
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build_file_index.txt €<EFBFBD>œÿƒ3
_ »ïòÀ÷2x
|
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/build_file_index.txt ±àÕ€„3
_ »ïòÀ÷2x
|
||||||
v
|
v
|
||||||
t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/compile_commands.json €<EFBFBD>œÿƒ3|
|
t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/compile_commands.json ±àÕ€„3|
|
||||||
z
|
z
|
||||||
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/compile_commands.json.bin €<EFBFBD>œÿƒ3 ƒ
|
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/compile_commands.json.bin ±àÕ€„3 ƒ
|
||||||
€
|
€
|
||||||
~/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/metadata_generation_command.txt €<EFBFBD>œÿƒ3
|
~/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/metadata_generation_command.txt ±àÕ€„3
|
||||||
€ »ïòÀ÷2u
|
€ »ïòÀ÷2u
|
||||||
s
|
s
|
||||||
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/prefab_config.json €<EFBFBD>œÿƒ3
( »ïòÀ÷2z
|
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/prefab_config.json ±àÕ€„3
( »ïòÀ÷2z
|
||||||
x
|
x
|
||||||
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/symbol_folder_index.txt €<EFBFBD>œÿƒ3
m »ïòÀ÷2c
|
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/armeabi-v7a/symbol_folder_index.txt ±àÕ€„3
m »ïòÀ÷2c
|
||||||
a
|
a
|
||||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt €<EFBFBD>œÿƒ3
¤ òÑÞ€á2
|
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt ±àÕ€„3
¤ òÑÞ€á2
|
||||||
@ -2,27 +2,27 @@ C/C++ Structured Logw
|
|||||||
u
|
u
|
||||||
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/additional_project_files.txtC
|
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Œ<EFBFBD>œÿƒ3 „òòÀ÷2t
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ¿àÕ€„3 „òòÀ÷2t
|
||||||
r
|
r
|
||||||
p/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/android_gradle_build.json Œ<EFBFBD>œÿƒ3ô „òòÀ÷2y
|
p/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/android_gradle_build.json ¿àÕ€„3ô „òòÀ÷2y
|
||||||
w
|
w
|
||||||
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/android_gradle_build_mini.json Œ<EFBFBD>œÿƒ3÷ …òòÀ÷2f
|
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/android_gradle_build_mini.json ¿àÕ€„3÷ …òòÀ÷2f
|
||||||
d
|
d
|
||||||
b/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build.ninja Œ<EFBFBD>œÿƒ3ÆÌ ûñòÀ÷2j
|
b/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build.ninja ¿àÕ€„3ÆÌ ûñòÀ÷2j
|
||||||
h
|
h
|
||||||
f/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build.ninja.txt Œ<EFBFBD>œÿƒ3o
|
f/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build.ninja.txt ¿àÕ€„3o
|
||||||
m
|
m
|
||||||
k/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build_file_index.txt Œ<EFBFBD>œÿƒ3
_ …òòÀ÷2p
|
k/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/build_file_index.txt ¿àÕ€„3
_ …òòÀ÷2p
|
||||||
n
|
n
|
||||||
l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/compile_commands.json Œ<EFBFBD>œÿƒ3t
|
l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/compile_commands.json ¿àÕ€„3t
|
||||||
r
|
r
|
||||||
p/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/compile_commands.json.bin Œ<EFBFBD>œÿƒ3 z
|
p/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/compile_commands.json.bin ¿àÕ€„3 z
|
||||||
x
|
x
|
||||||
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/metadata_generation_command.txt Œ<EFBFBD>œÿƒ3
|
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/metadata_generation_command.txt ¿àÕ€„3
|
||||||
Ø …òòÀ÷2m
|
Ø …òòÀ÷2m
|
||||||
k
|
k
|
||||||
i/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/prefab_config.json Œ<EFBFBD>œÿƒ3
( …òòÀ÷2r
|
i/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/prefab_config.json ¿àÕ€„3
( …òòÀ÷2r
|
||||||
p
|
p
|
||||||
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/symbol_folder_index.txt Œ<EFBFBD>œÿƒ3
e …òòÀ÷2c
|
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/symbol_folder_index.txt ¿àÕ€„3
e …òòÀ÷2c
|
||||||
a
|
a
|
||||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt Œ<EFBFBD>œÿƒ3
¤ òÑÞ€á2
|
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt ¿àÕ€„3
¤ òÑÞ€á2
|
||||||
@ -2,27 +2,27 @@ C/C++ Structured Logz
|
|||||||
x
|
x
|
||||||
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/additional_project_files.txtC
|
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint –<EFBFBD>œÿƒ3 •ôòÀ÷2w
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ÊàÕ€„3 •ôòÀ÷2w
|
||||||
u
|
u
|
||||||
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/android_gradle_build.json –<EFBFBD>œÿƒ3ú •ôòÀ÷2|
|
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/android_gradle_build.json ÊàÕ€„3ú •ôòÀ÷2|
|
||||||
z
|
z
|
||||||
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/android_gradle_build_mini.json –<EFBFBD>œÿƒ3ý –ôòÀ÷2i
|
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/android_gradle_build_mini.json ÊàÕ€„3ý –ôòÀ÷2i
|
||||||
g
|
g
|
||||||
e/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build.ninja –<EFBFBD>œÿƒ3ØÌ <20>ôòÀ÷2m
|
e/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build.ninja ÊàÕ€„3ØÌ <20>ôòÀ÷2m
|
||||||
k
|
k
|
||||||
i/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build.ninja.txt –<EFBFBD>œÿƒ3r
|
i/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build.ninja.txt ÊàÕ€„3r
|
||||||
p
|
p
|
||||||
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build_file_index.txt –<EFBFBD>œÿƒ3
_ –ôòÀ÷2s
|
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/build_file_index.txt ÊàÕ€„3
_ –ôòÀ÷2s
|
||||||
q
|
q
|
||||||
o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/compile_commands.json –<EFBFBD>œÿƒ3w
|
o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/compile_commands.json ÊàÕ€„3w
|
||||||
u
|
u
|
||||||
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/compile_commands.json.bin –<EFBFBD>œÿƒ3 }
|
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/compile_commands.json.bin ÊàÕ€„3 }
|
||||||
{
|
{
|
||||||
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/metadata_generation_command.txt –<EFBFBD>œÿƒ3
|
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/metadata_generation_command.txt ÊàÕ€„3
|
||||||
ç –ôòÀ÷2p
|
ç –ôòÀ÷2p
|
||||||
n
|
n
|
||||||
l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/prefab_config.json –<EFBFBD>œÿƒ3
( –ôòÀ÷2u
|
l/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/prefab_config.json ÊàÕ€„3
( –ôòÀ÷2u
|
||||||
s
|
s
|
||||||
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/symbol_folder_index.txt –<EFBFBD>œÿƒ3
h –ôòÀ÷2c
|
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/symbol_folder_index.txt ÊàÕ€„3
h –ôòÀ÷2c
|
||||||
a
|
a
|
||||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt –<EFBFBD>œÿƒ3
¤ òÑÞ€á2
|
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt ÊàÕ€„3
¤ òÑÞ€á2
|
||||||
@ -2,27 +2,27 @@ C/C++ Structured Log
|
|||||||
…
|
…
|
||||||
‚/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/additional_project_files.txtC
|
‚/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ©¥‘<EFBFBD>û2 ™ªÇŸô2„
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Á÷<EFBFBD>׆3 ™ªÇŸô2„
|
||||||
<EFBFBD>
|
<EFBFBD>
|
||||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/android_gradle_build.json ©¥‘<EFBFBD>û2’ œªÇŸô2Š
|
/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_mini.json ©¥‘<EFBFBD>û2• ¤ªÇŸô2u
|
„/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/android_gradle_build_mini.json Á÷<EFBFBD>׆3• ¤ªÇŸô2u
|
||||||
s
|
s
|
||||||
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja ©¥‘<EFBFBD>û2²Í ù©ÇŸô2y
|
q/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja Á÷<EFBFBD>׆3²Í ù©ÇŸô2y
|
||||||
w
|
w
|
||||||
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja.txt ©¥‘<EFBFBD>û2~
|
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build.ninja.txt Á÷<EFBFBD>׆3~
|
||||||
|
|
|
|
||||||
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build_file_index.txt ©¥‘<EFBFBD>û2
_ ¥ªÇŸô2
|
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/build_file_index.txt Á÷<EFBFBD>׆3
_ ¥ªÇŸô2
|
||||||
}
|
}
|
||||||
{/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/compile_commands.json ©¥‘<EFBFBD>û2„
|
{/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/compile_commands.json Á÷<EFBFBD>׆3„
|
||||||
<EFBFBD>
|
<EFBFBD>
|
||||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/compile_commands.json.bin ©¥‘<EFBFBD>û2 ‹
|
/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/metadata_generation_command.txt ©¥‘<EFBFBD>û2
|
…/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/metadata_generation_command.txt Á÷<EFBFBD>׆3
|
||||||
š ¥ªÇŸô2|
|
š ¥ªÇŸô2|
|
||||||
z
|
z
|
||||||
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/prefab_config.json ©¥‘<EFBFBD>û2
( ¥ªÇŸô2<C3B4>
|
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/prefab_config.json Á÷<EFBFBD>׆3
( ¥ªÇŸô2<C3B4>
|
||||||
|
|
||||||
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/symbol_folder_index.txt ©¥‘<EFBFBD>û2
t ¥ªÇŸô2c
|
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/arm64-v8a/symbol_folder_index.txt Á÷<EFBFBD>׆3
t ¥ªÇŸô2c
|
||||||
a
|
a
|
||||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt ©¥‘<EFBFBD>û2
¤ òÑÞ€á2
|
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt Á÷<EFBFBD>׆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
|
„/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint º¥‘<EFBFBD>û2 £¼ÇŸô2‡
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Ü÷<EFBFBD>׆3 £¼ÇŸô2‡
|
||||||
„
|
„
|
||||||
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build.json º¥‘<EFBFBD>û2– ¤¼ÇŸô2Œ
|
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build.json Ü÷<EFBFBD>׆3– ¤¼ÇŸô2Œ
|
||||||
‰
|
‰
|
||||||
†/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build_mini.json º¥‘<EFBFBD>û2™ ¥¼ÇŸô2w
|
†/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/android_gradle_build_mini.json Ü÷<EFBFBD>׆3™ ¥¼ÇŸô2w
|
||||||
u
|
u
|
||||||
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja º¥‘<EFBFBD>û2¾Í ’¼ÇŸô2{
|
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja Ü÷<EFBFBD>׆3¾Í ’¼ÇŸô2{
|
||||||
y
|
y
|
||||||
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja.txt º¥‘<EFBFBD>û2€
|
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build.ninja.txt Ü÷<EFBFBD>׆3€
|
||||||
~
|
~
|
||||||
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/build_file_index.txt º¥‘<EFBFBD>û2
_ ¦¼ÇŸô2<C3B4>
|
|/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/compile_commands.json º¥‘<EFBFBD>û2‡
|
}/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/compile_commands.json Ü÷<EFBFBD>׆3‡
|
||||||
„
|
„
|
||||||
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/compile_commands.json.bin º¥‘<EFBFBD>û2 <09>
|
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/compile_commands.json.bin Ü÷<EFBFBD>׆3 <09>
|
||||||
Š
|
Š
|
||||||
‡/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/metadata_generation_command.txt º¥‘<EFBFBD>û2
|
‡/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/metadata_generation_command.txt Ü÷<EFBFBD>׆3
|
||||||
¤ ¥¼ÇŸô2~
|
¤ ¥¼ÇŸô2~
|
||||||
|
|
|
|
||||||
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/prefab_config.json º¥‘<EFBFBD>û2
( ¦¼ÇŸô2„
|
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/prefab_config.json Ü÷<EFBFBD>׆3
( ¦¼ÇŸô2„
|
||||||
<EFBFBD>
|
<EFBFBD>
|
||||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/symbol_folder_index.txt º¥‘<EFBFBD>û2
v ¦¼ÇŸô2c
|
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/armeabi-v7a/symbol_folder_index.txt Ü÷<EFBFBD>׆3
v ¦¼ÇŸô2c
|
||||||
a
|
a
|
||||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt º¥‘<EFBFBD>û2
¤ òÑÞ€á2
|
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt Ü÷<EFBFBD>׆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
|
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Ã¥‘<EFBFBD>û2 µÂÇŸô2}
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint é÷<EFBFBD>׆3 µÂÇŸô2}
|
||||||
{
|
{
|
||||||
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build.json Ã¥‘<EFBFBD>û2† ·ÂÇŸô2ƒ
|
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build.json é÷<EFBFBD>׆3† ·ÂÇŸô2ƒ
|
||||||
€
|
€
|
||||||
~/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build_mini.json Ã¥‘<EFBFBD>û2‰ ¸ÂÇŸô2o
|
~/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/android_gradle_build_mini.json é÷<EFBFBD>׆3‰ ¸ÂÇŸô2o
|
||||||
m
|
m
|
||||||
k/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja Ã¥‘<EFBFBD>û2ŽÍ ¨ÂÇŸô2s
|
k/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja é÷<EFBFBD>׆3ŽÍ ¨ÂÇŸô2s
|
||||||
q
|
q
|
||||||
o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja.txt Ã¥‘<EFBFBD>û2x
|
o/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build.ninja.txt é÷<EFBFBD>׆3x
|
||||||
v
|
v
|
||||||
t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build_file_index.txt Ã¥‘<EFBFBD>û2
_ ¹ÂÇŸô2y
|
t/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/build_file_index.txt é÷<EFBFBD>׆3
_ ¹ÂÇŸô2y
|
||||||
w
|
w
|
||||||
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json Ã¥‘<EFBFBD>û2}
|
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json é÷<EFBFBD>׆3}
|
||||||
{
|
{
|
||||||
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json.bin Ã¥‘<EFBFBD>û2 „
|
y/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/compile_commands.json.bin é÷<EFBFBD>׆3 „
|
||||||
<EFBFBD>
|
<EFBFBD>
|
||||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/metadata_generation_command.txt Ã¥‘<EFBFBD>û2
|
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/metadata_generation_command.txt é÷<EFBFBD>׆3
|
||||||
ü ¹ÂÇŸô2v
|
ü ¹ÂÇŸô2v
|
||||||
t
|
t
|
||||||
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/prefab_config.json Ã¥‘<EFBFBD>û2
( ¹ÂÇŸô2{
|
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/prefab_config.json é÷<EFBFBD>׆3
( ¹ÂÇŸô2{
|
||||||
y
|
y
|
||||||
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/symbol_folder_index.txt Ã¥‘<EFBFBD>û2
n ¹ÂÇŸô2c
|
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86/symbol_folder_index.txt é÷<EFBFBD>׆3
n ¹ÂÇŸô2c
|
||||||
a
|
a
|
||||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt Ã¥‘<EFBFBD>û2
¤ òÑÞ€á2
|
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt é÷<EFBFBD>׆3
¤ òÑÞ€á2
|
||||||
@ -2,27 +2,27 @@ C/C++ Structured Log
|
|||||||
<EFBFBD>
|
<EFBFBD>
|
||||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/additional_project_files.txtC
|
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/additional_project_files.txtC
|
||||||
A
|
A
|
||||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Ê¥‘<EFBFBD>û2 ·ÆÇŸô2€
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ð÷<EFBFBD>׆3 ·ÆÇŸô2€
|
||||||
~
|
~
|
||||||
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build.json Ê¥‘<EFBFBD>û2Œ ¸ÆÇŸô2‡
|
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build.json ð÷<EFBFBD>׆3Œ ¸ÆÇŸô2‡
|
||||||
„
|
„
|
||||||
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build_mini.json Ê¥‘<EFBFBD>û2<18> ¹ÆÇŸô2r
|
<EFBFBD>/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/android_gradle_build_mini.json ð÷<EFBFBD>׆3<18> ¹ÆÇŸô2r
|
||||||
p
|
p
|
||||||
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja Ê¥‘<EFBFBD>û2 Í §ÆÇŸô2v
|
n/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja ð÷<EFBFBD>׆3 Í §ÆÇŸô2v
|
||||||
t
|
t
|
||||||
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja.txt Ê¥‘<EFBFBD>û2{
|
r/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build.ninja.txt ð÷<EFBFBD>׆3{
|
||||||
y
|
y
|
||||||
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build_file_index.txt Ê¥‘<EFBFBD>û2
_ ¹ÆÇŸô2|
|
w/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/build_file_index.txt ð÷<EFBFBD>׆3
_ ¹ÆÇŸô2|
|
||||||
z
|
z
|
||||||
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/compile_commands.json Ê¥‘<EFBFBD>û2€
|
x/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/compile_commands.json ð÷<EFBFBD>׆3€
|
||||||
~
|
~
|
||||||
|/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/compile_commands.json.bin Ê¥‘<EFBFBD>û2 ˆ
|
|/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/metadata_generation_command.txt Ê¥‘<EFBFBD>û2
|
‚/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/metadata_generation_command.txt ð÷<EFBFBD>׆3
|
||||||
‹ ¹ÆÇŸô2y
|
‹ ¹ÆÇŸô2y
|
||||||
w
|
w
|
||||||
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/prefab_config.json Ê¥‘<EFBFBD>û2
( ¹ÆÇŸô2~
|
u/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/prefab_config.json ð÷<EFBFBD>׆3
( ¹ÆÇŸô2~
|
||||||
|
|
|
|
||||||
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/symbol_folder_index.txt Ê¥‘<EFBFBD>û2
q ¹ÆÇŸô2c
|
z/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/symbol_folder_index.txt ð÷<EFBFBD>׆3
q ¹ÆÇŸô2c
|
||||||
a
|
a
|
||||||
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt Ê¥‘<EFBFBD>û2
¤ òÑÞ€á2
|
_/Users/venbateam/Documents/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt ð÷<EFBFBD>׆3
¤ òÑÞ€á2
|
||||||
@ -3,6 +3,16 @@ PODS:
|
|||||||
- Flutter
|
- Flutter
|
||||||
- app_settings (5.1.1):
|
- app_settings (5.1.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- AppAuth (2.0.0):
|
||||||
|
- AppAuth/Core (= 2.0.0)
|
||||||
|
- AppAuth/ExternalUserAgent (= 2.0.0)
|
||||||
|
- AppAuth/Core (2.0.0)
|
||||||
|
- AppAuth/ExternalUserAgent (2.0.0):
|
||||||
|
- AppAuth/Core
|
||||||
|
- AppCheckCore (11.2.0):
|
||||||
|
- GoogleUtilities/Environment (~> 8.0)
|
||||||
|
- GoogleUtilities/UserDefaults (~> 8.0)
|
||||||
|
- PromisesObjC (~> 2.4)
|
||||||
- appsflyer_sdk (6.16.2):
|
- appsflyer_sdk (6.16.2):
|
||||||
- AppsFlyerFramework (= 6.16.2)
|
- AppsFlyerFramework (= 6.16.2)
|
||||||
- Flutter
|
- Flutter
|
||||||
@ -53,9 +63,19 @@ PODS:
|
|||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- fluttertoast (0.0.2):
|
- fluttertoast (0.0.2):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- google_sign_in_ios (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- FlutterMacOS
|
||||||
|
- GoogleSignIn (~> 9.0)
|
||||||
|
- GTMSessionFetcher (>= 3.4.0)
|
||||||
- GoogleDataTransport (10.1.0):
|
- GoogleDataTransport (10.1.0):
|
||||||
- nanopb (~> 3.30910.0)
|
- nanopb (~> 3.30910.0)
|
||||||
- PromisesObjC (~> 2.4)
|
- PromisesObjC (~> 2.4)
|
||||||
|
- GoogleSignIn (9.0.0):
|
||||||
|
- AppAuth (~> 2.0)
|
||||||
|
- AppCheckCore (~> 11.0)
|
||||||
|
- GTMAppAuth (~> 5.0)
|
||||||
|
- GTMSessionFetcher/Core (~> 3.3)
|
||||||
- GoogleUtilities/AppDelegateSwizzler (8.0.2):
|
- GoogleUtilities/AppDelegateSwizzler (8.0.2):
|
||||||
- GoogleUtilities/Environment
|
- GoogleUtilities/Environment
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
@ -80,6 +100,14 @@ PODS:
|
|||||||
- GoogleUtilities/UserDefaults (8.0.2):
|
- GoogleUtilities/UserDefaults (8.0.2):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
|
- GTMAppAuth (5.0.0):
|
||||||
|
- AppAuth/Core (~> 2.0)
|
||||||
|
- GTMSessionFetcher/Core (< 4.0, >= 3.3)
|
||||||
|
- GTMSessionFetcher (3.5.0):
|
||||||
|
- GTMSessionFetcher/Full (= 3.5.0)
|
||||||
|
- GTMSessionFetcher/Core (3.5.0)
|
||||||
|
- GTMSessionFetcher/Full (3.5.0):
|
||||||
|
- GTMSessionFetcher/Core
|
||||||
- image_picker_ios (0.0.1):
|
- image_picker_ios (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- nanopb (3.30910.0):
|
- nanopb (3.30910.0):
|
||||||
@ -119,6 +147,7 @@ DEPENDENCIES:
|
|||||||
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
|
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
|
||||||
- flutter_secure_storage_darwin (from `.symlinks/plugins/flutter_secure_storage_darwin/darwin`)
|
- flutter_secure_storage_darwin (from `.symlinks/plugins/flutter_secure_storage_darwin/darwin`)
|
||||||
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
|
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
|
||||||
|
- google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`)
|
||||||
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
|
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
|
||||||
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
||||||
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
||||||
@ -130,6 +159,8 @@ DEPENDENCIES:
|
|||||||
|
|
||||||
SPEC REPOS:
|
SPEC REPOS:
|
||||||
trunk:
|
trunk:
|
||||||
|
- AppAuth
|
||||||
|
- AppCheckCore
|
||||||
- AppsFlyerFramework
|
- AppsFlyerFramework
|
||||||
- Firebase
|
- Firebase
|
||||||
- FirebaseCore
|
- FirebaseCore
|
||||||
@ -137,7 +168,10 @@ SPEC REPOS:
|
|||||||
- FirebaseInstallations
|
- FirebaseInstallations
|
||||||
- FirebaseMessaging
|
- FirebaseMessaging
|
||||||
- GoogleDataTransport
|
- GoogleDataTransport
|
||||||
|
- GoogleSignIn
|
||||||
- GoogleUtilities
|
- GoogleUtilities
|
||||||
|
- GTMAppAuth
|
||||||
|
- GTMSessionFetcher
|
||||||
- nanopb
|
- nanopb
|
||||||
- PromisesObjC
|
- PromisesObjC
|
||||||
|
|
||||||
@ -164,6 +198,8 @@ EXTERNAL SOURCES:
|
|||||||
:path: ".symlinks/plugins/flutter_secure_storage_darwin/darwin"
|
:path: ".symlinks/plugins/flutter_secure_storage_darwin/darwin"
|
||||||
fluttertoast:
|
fluttertoast:
|
||||||
:path: ".symlinks/plugins/fluttertoast/ios"
|
:path: ".symlinks/plugins/fluttertoast/ios"
|
||||||
|
google_sign_in_ios:
|
||||||
|
:path: ".symlinks/plugins/google_sign_in_ios/darwin"
|
||||||
image_picker_ios:
|
image_picker_ios:
|
||||||
:path: ".symlinks/plugins/image_picker_ios/ios"
|
:path: ".symlinks/plugins/image_picker_ios/ios"
|
||||||
package_info_plus:
|
package_info_plus:
|
||||||
@ -184,6 +220,8 @@ EXTERNAL SOURCES:
|
|||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
app_links: 76b66b60cc809390ca1ad69bfd66b998d2387ac7
|
app_links: 76b66b60cc809390ca1ad69bfd66b998d2387ac7
|
||||||
app_settings: 5127ae0678de1dcc19f2293271c51d37c89428b2
|
app_settings: 5127ae0678de1dcc19f2293271c51d37c89428b2
|
||||||
|
AppAuth: 1c1a8afa7e12f2ec3a294d9882dfa5ab7d3cb063
|
||||||
|
AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f
|
||||||
appsflyer_sdk: ebe94dc3f00b07bdd001251dbc87879bda3c494a
|
appsflyer_sdk: ebe94dc3f00b07bdd001251dbc87879bda3c494a
|
||||||
AppsFlyerFramework: fe5303bffcdfd941d5f570c2d21eaaea982e7bdc
|
AppsFlyerFramework: fe5303bffcdfd941d5f570c2d21eaaea982e7bdc
|
||||||
connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd
|
connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd
|
||||||
@ -199,8 +237,12 @@ SPEC CHECKSUMS:
|
|||||||
flutter_native_splash: 6cad9122ea0fad137d23137dd14b937f3e90b145
|
flutter_native_splash: 6cad9122ea0fad137d23137dd14b937f3e90b145
|
||||||
flutter_secure_storage_darwin: ce237a8775b39723566dc72571190a3769d70468
|
flutter_secure_storage_darwin: ce237a8775b39723566dc72571190a3769d70468
|
||||||
fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
|
fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
|
||||||
|
google_sign_in_ios: 205742c688aea0e64db9da03c33121694a365109
|
||||||
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
|
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
|
||||||
|
GoogleSignIn: c7f09cfbc85a1abf69187be091997c317cc33b77
|
||||||
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
|
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
|
||||||
|
GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238
|
||||||
|
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
|
||||||
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
|
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
|
||||||
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
||||||
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
|
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
|
||||||
|
|||||||
@ -322,14 +322,10 @@
|
|||||||
inputFileListPaths = (
|
inputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
);
|
);
|
||||||
inputPaths = (
|
|
||||||
);
|
|
||||||
name = "[CP] Embed Pods Frameworks";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputFileListPaths = (
|
outputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
);
|
);
|
||||||
outputPaths = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
||||||
@ -358,14 +354,10 @@
|
|||||||
inputFileListPaths = (
|
inputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
);
|
);
|
||||||
inputPaths = (
|
|
||||||
);
|
|
||||||
name = "[CP] Copy Pods Resources";
|
name = "[CP] Copy Pods Resources";
|
||||||
outputFileListPaths = (
|
outputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
);
|
);
|
||||||
outputPaths = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
||||||
|
|||||||
@ -4,5 +4,9 @@
|
|||||||
<dict>
|
<dict>
|
||||||
<key>aps-environment</key>
|
<key>aps-environment</key>
|
||||||
<string>development</string>
|
<string>development</string>
|
||||||
|
<key>com.apple.developer.applesignin</key>
|
||||||
|
<array>
|
||||||
|
<string>Default</string>
|
||||||
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@ -1,14 +1,13 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:pocketbase/pocketbase.dart';
|
import 'package:pocketbase/pocketbase.dart';
|
||||||
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:uae_stat/config/api_config.dart';
|
import 'package:uae_stat/config/api_config.dart';
|
||||||
|
|
||||||
class ThemeBaseService {
|
class ThemeBaseService {
|
||||||
final pb = PocketBase(apiUrl);
|
final pb = PocketBase(apiUrl);
|
||||||
dynamic themeData;
|
dynamic themeData;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Future getUserTheme(String userId) async {
|
// Future getUserTheme(String userId) async {
|
||||||
// final prefs = await SharedPreferences.getInstance();
|
// final prefs = await SharedPreferences.getInstance();
|
||||||
// final userId = prefs.getString('userId') ?? '';
|
// final userId = prefs.getString('userId') ?? '';
|
||||||
@ -40,14 +39,15 @@ class ThemeBaseService {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
Future<dynamic> getUserTheme(String userId) async {
|
Future<dynamic> getUserTheme(String userId) async {
|
||||||
|
print('getUserTheme');
|
||||||
final url = "${pb.baseUrl}/api/collections/users/records/$userId";
|
final url = "${pb.baseUrl}/api/collections/users/records/$userId";
|
||||||
|
|
||||||
final adminAuth = await pb.admins.authWithPassword(
|
final adminAuth = await pb.admins.authWithPassword(
|
||||||
'pb@venbainfotech.com',
|
'pb@venbainfotech.com',
|
||||||
'pb@venbainfotech.com',
|
'pb@venbainfotech.com',
|
||||||
);
|
);
|
||||||
final String adminToken = adminAuth.token;
|
final String adminToken = adminAuth.token;
|
||||||
print('adminToken: $adminToken');
|
print('adminToken: $adminToken');
|
||||||
final response = await http.get(
|
final response = await http.get(
|
||||||
Uri.parse(url),
|
Uri.parse(url),
|
||||||
headers: {
|
headers: {
|
||||||
@ -57,13 +57,22 @@ class ThemeBaseService {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
|
print("THEME : ${jsonDecode(response.body)['theme']} ");
|
||||||
|
|
||||||
|
final prefs = await SharedPreferences.getInstance();
|
||||||
|
|
||||||
|
// Store enum as string
|
||||||
|
await prefs.setString('ThemeType', jsonDecode(response.body)['theme']);
|
||||||
|
|
||||||
return jsonDecode(response.body)['theme'] ?? 'system';
|
return jsonDecode(response.body)['theme'] ?? 'system';
|
||||||
} else {
|
} else {
|
||||||
|
print('THEME : system');
|
||||||
return 'system';
|
return 'system';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> updateUserTheme(String userId, String theme) async {
|
Future<void> updateUserTheme(String userId, String theme) async {
|
||||||
|
print('updateUserTheme');
|
||||||
// Authenticate admin d
|
// Authenticate admin d
|
||||||
final url = "${pb.baseUrl}/api/collections/users/records/$userId";
|
final url = "${pb.baseUrl}/api/collections/users/records/$userId";
|
||||||
final adminAuth = await pb.admins.authWithPassword(
|
final adminAuth = await pb.admins.authWithPassword(
|
||||||
@ -85,7 +94,7 @@ class ThemeBaseService {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
print("Theme updated successfully");
|
print("Theme updated successfully - ${response.body}");
|
||||||
} else {
|
} else {
|
||||||
print("Failed to update theme: ${response.body}");
|
print("Failed to update theme: ${response.body}");
|
||||||
throw Exception('Failed to update theme');
|
throw Exception('Failed to update theme');
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:uae_stat/config/theme/app_theme.dart';
|
import 'package:uae_stat/config/theme/app_theme.dart';
|
||||||
|
|
||||||
class ThemeSelectorDialog extends StatefulWidget {
|
class ThemeSelectorDialog extends StatefulWidget {
|
||||||
@ -11,12 +12,28 @@ class ThemeSelectorDialog extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _ThemeSelectorDialogState extends State<ThemeSelectorDialog> {
|
class _ThemeSelectorDialogState extends State<ThemeSelectorDialog> {
|
||||||
late AppTheme _selectedTheme;
|
AppTheme? _selectedTheme;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_selectedTheme = widget.initialTheme;
|
|
||||||
|
print("InitailTheme - ${widget.initialTheme}");
|
||||||
|
_loadTheme();
|
||||||
|
|
||||||
|
// _selectedTheme = widget.initialTheme;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _loadTheme() async {
|
||||||
|
final prefs = await SharedPreferences.getInstance();
|
||||||
|
final storedTheme = prefs.getString('ThemeType') ?? widget.initialTheme;
|
||||||
|
print("storedTheme - $storedTheme");
|
||||||
|
setState(() {
|
||||||
|
_selectedTheme =
|
||||||
|
storedTheme == 'system' ? AppTheme.system : widget.initialTheme;
|
||||||
|
});
|
||||||
|
|
||||||
|
print("_selectedTheme - $_selectedTheme");
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -26,12 +43,21 @@ class _ThemeSelectorDialogState extends State<ThemeSelectorDialog> {
|
|||||||
content: Column(
|
content: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: AppTheme.values.map((theme) {
|
children: AppTheme.values.map((theme) {
|
||||||
|
print("THEME_DIAL1- $theme");
|
||||||
return RadioListTile<AppTheme>(
|
return RadioListTile<AppTheme>(
|
||||||
title: Text(theme.name[0].toUpperCase() + theme.name.substring(1)),
|
title:
|
||||||
value: theme,
|
Text(theme.name[0].toUpperCase() + theme.name.substring(1)),
|
||||||
groupValue: _selectedTheme,
|
value: theme,
|
||||||
onChanged: (value) => setState(() => _selectedTheme = value!),
|
groupValue: _selectedTheme,
|
||||||
);
|
onChanged: (value) async {
|
||||||
|
final prefs = await SharedPreferences.getInstance();
|
||||||
|
print("THEME_DIALval- $value");
|
||||||
|
// Store enum as string
|
||||||
|
await prefs.setString(
|
||||||
|
'ThemeType', value.toString().split('.').last);
|
||||||
|
|
||||||
|
setState(() => _selectedTheme = value!);
|
||||||
|
});
|
||||||
}).toList(),
|
}).toList(),
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
|
|||||||
@ -31,7 +31,7 @@ class SessionEntity {
|
|||||||
SessionFreshness get freshness {
|
SessionFreshness get freshness {
|
||||||
final now = DateTime.now();
|
final now = DateTime.now();
|
||||||
if (now.isAfter(expiresOn)) return SessionFreshness.expired;
|
if (now.isAfter(expiresOn)) return SessionFreshness.expired;
|
||||||
if (expiresOn.difference(now) < const Duration(days: 7)) {
|
if (expiresOn.difference(now) < const Duration(days: 30)) {
|
||||||
return SessionFreshness.stale;
|
return SessionFreshness.stale;
|
||||||
}
|
}
|
||||||
return SessionFreshness.fresh;
|
return SessionFreshness.fresh;
|
||||||
|
|||||||
@ -37,6 +37,11 @@ class TAuthRepo {
|
|||||||
() => _state!,
|
() => _state!,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Future googleAndAppleAuthencation(token) => Future.delayed(
|
||||||
|
kThemeAnimationDuration,
|
||||||
|
() => _sample,
|
||||||
|
);
|
||||||
|
|
||||||
Future<void> logout() => Future.delayed(
|
Future<void> logout() => Future.delayed(
|
||||||
kThemeAnimationDuration,
|
kThemeAnimationDuration,
|
||||||
() => _state = null,
|
() => _state = null,
|
||||||
|
|||||||
@ -69,6 +69,21 @@ class AuthUseCase extends _$AuthUseCase {
|
|||||||
return session; // Return the session with user details.
|
return session; // Return the session with user details.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<SessionEntity> googleAndAppleAuthencation(token) async {
|
||||||
|
// print("loginTEST2");
|
||||||
|
final session = await _repo.googleAndAppleAuthencation(token);
|
||||||
|
// print("loginTEST4");
|
||||||
|
final localPrefs = await getIt.call<TLocalPreferencesRepo>().get();
|
||||||
|
if (localPrefs != null) {
|
||||||
|
await getIt.call<TUserRepo>().syncPreferences(
|
||||||
|
localPrefs,
|
||||||
|
id: session.id,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
state = AsyncData(session);
|
||||||
|
return session; // Return the session with user details.
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> logout() async {
|
Future<void> logout() async {
|
||||||
await _repo.logout();
|
await _repo.logout();
|
||||||
state = const AsyncData(null);
|
state = const AsyncData(null);
|
||||||
|
|||||||
@ -53,6 +53,7 @@ class PAuthRepo implements TAuthRepo {
|
|||||||
email,
|
email,
|
||||||
pw,
|
pw,
|
||||||
);
|
);
|
||||||
|
print('googleAuth $user');
|
||||||
} on ClientException catch (err) {
|
} on ClientException catch (err) {
|
||||||
final message = err.response['message'];
|
final message = err.response['message'];
|
||||||
final isWrongEmailPw = message == 'Failed to authenticate.';
|
final isWrongEmailPw = message == 'Failed to authenticate.';
|
||||||
@ -66,6 +67,30 @@ class PAuthRepo implements TAuthRepo {
|
|||||||
return se;
|
return se;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<SessionEntity> googleAndAppleAuthencation(token) async {
|
||||||
|
print("GloginTEST3");
|
||||||
|
late final RecordAuth user;
|
||||||
|
try {
|
||||||
|
// user = await PocketBaseService.users.authWithPassword(
|
||||||
|
// email,
|
||||||
|
// pw,
|
||||||
|
// );
|
||||||
|
|
||||||
|
user = token;
|
||||||
|
} on ClientException catch (err) {
|
||||||
|
final message = err.response['message'];
|
||||||
|
final isWrongEmailPw = message == 'Failed to authenticate.';
|
||||||
|
if (isWrongEmailPw) throw LoginError.invalidEmailPw;
|
||||||
|
rethrow;
|
||||||
|
}
|
||||||
|
final isVerified = user.record!.getBoolValue('verified');
|
||||||
|
if (!isVerified) throw LoginError.emailAddressNotVerified;
|
||||||
|
final se = _sessionEntityFromPocketbaseRecord(user);
|
||||||
|
await _LocalAuthRepo.storeLocally(se);
|
||||||
|
return se;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> logout() {
|
Future<void> logout() {
|
||||||
PocketBaseService.authStore.clear();
|
PocketBaseService.authStore.clear();
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import 'package:uae_stat/presentation/components/indicators/locale_provider.dart
|
|||||||
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
||||||
import 'package:uae_stat/presentation/components/space.dart';
|
import 'package:uae_stat/presentation/components/space.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/config/my_theme.dart';
|
import 'package:uae_stat/config/my_theme.dart';
|
||||||
|
|
||||||
class CreateNewPw extends ConsumerStatefulWidget {
|
class CreateNewPw extends ConsumerStatefulWidget {
|
||||||
@ -27,9 +27,9 @@ class CreateNewPw extends ConsumerStatefulWidget {
|
|||||||
|
|
||||||
const CreateNewPw(
|
const CreateNewPw(
|
||||||
{Key? key,
|
{Key? key,
|
||||||
required this.userId,
|
required this.userId,
|
||||||
required this.email,
|
required this.email,
|
||||||
required this.keyParam});
|
required this.keyParam});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
ConsumerState<CreateNewPw> createState() => _CreateNewPwState();
|
ConsumerState<CreateNewPw> createState() => _CreateNewPwState();
|
||||||
@ -126,7 +126,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
try {
|
try {
|
||||||
// Attempt to authenticate the user with email and password
|
// Attempt to authenticate the user with email and password
|
||||||
final authResponse =
|
final authResponse =
|
||||||
await _pb.collection('users').authWithPassword(email, password);
|
await _pb.collection('users').authWithPassword(email, password);
|
||||||
|
|
||||||
if (authResponse != null) {
|
if (authResponse != null) {
|
||||||
print('Password match successful for email: $email');
|
print('Password match successful for email: $email');
|
||||||
@ -156,20 +156,20 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
bool isPasswordValid =
|
bool isPasswordValid =
|
||||||
await verifyUserPassword(widget.email, oldPassword);
|
await verifyUserPassword(widget.email, oldPassword);
|
||||||
|
|
||||||
print(isPasswordValid);
|
print(isPasswordValid);
|
||||||
|
|
||||||
if (isPasswordValid) {
|
if (isPasswordValid) {
|
||||||
// Update password
|
// Update password
|
||||||
await _pb.collection('users').update(
|
await _pb.collection('users').update(
|
||||||
userId,
|
userId,
|
||||||
body: {
|
body: {
|
||||||
'password': newPassword,
|
'password': newPassword,
|
||||||
'passwordConfirm': newPassword,
|
'passwordConfirm': newPassword,
|
||||||
},
|
},
|
||||||
headers: headers,
|
headers: headers,
|
||||||
);
|
);
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
@ -179,13 +179,13 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
ScaffoldMessenger.of(context).showSnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
SnackBar(
|
SnackBar(
|
||||||
content: Text(
|
content: Text(
|
||||||
AppLocalizations.of(context)!.password_update_successfully,
|
AppLocalizations.of(context)!.password_update_successfully,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
)
|
)),
|
||||||
),),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -203,14 +203,14 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
});
|
});
|
||||||
ScaffoldMessenger.of(context).showSnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
SnackBar(
|
SnackBar(
|
||||||
content:
|
content: Text(
|
||||||
Text(AppLocalizations.of(context)!.your_old_password_incorrect,
|
AppLocalizations.of(context)!.your_old_password_incorrect,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
)
|
)),
|
||||||
),),
|
),
|
||||||
backgroundColor: Colors.red,
|
backgroundColor: Colors.red,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@ -222,13 +222,14 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
});
|
});
|
||||||
ScaffoldMessenger.of(context).showSnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
SnackBar(
|
SnackBar(
|
||||||
content: Text(context.translate('Failed to update password: $e','فشل في تحديث كلمة المرور'),
|
content: Text(
|
||||||
|
context.translate(
|
||||||
|
'Failed to update password: $e', 'فشل في تحديث كلمة المرور'),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
)
|
)),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
backgroundColor: Colors.red,
|
backgroundColor: Colors.red,
|
||||||
),
|
),
|
||||||
@ -256,53 +257,51 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// final themeMode = ref.read(themeProvider);
|
// final themeMode = ref.read(themeProvider);
|
||||||
final themeMode = ThemeMode.dark;
|
// final themeMode = ThemeMode.dark;
|
||||||
final isDarkTheme = themeMode == ThemeMode.dark ||
|
final isDarkTheme = ref.read(themeProvider) == ThemeMode.dark ||
|
||||||
(themeMode == ThemeMode.system &&
|
(ref.read(themeProvider) == ThemeMode.system &&
|
||||||
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
||||||
|
|
||||||
return PopScope(
|
return PopScope(
|
||||||
canPop: false, // Allow back navigation only if not login screen
|
canPop: false, // Allow back navigation only if not login screen
|
||||||
onPopInvokedWithResult: (didPop, result) {
|
onPopInvokedWithResult: (didPop, result) {
|
||||||
if (didPop) return;
|
if (didPop) return;
|
||||||
logout(context);// Show exit confirmation dialog
|
logout(context); // Show exit confirmation dialog
|
||||||
},
|
},
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
backgroundColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
backgroundColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
||||||
body: Stack(children: [
|
body: Stack(children: [
|
||||||
SingleChildScrollView(
|
SingleChildScrollView(
|
||||||
child: SafeArea(
|
child: SafeArea(
|
||||||
child: _isPasswordUpdated
|
child: _isPasswordUpdated
|
||||||
? _buildSuccessContent(screenHeight, screenWidth)
|
? _buildSuccessContent(
|
||||||
: _buildPasswordForm(ref, screenHeight, screenWidth),
|
screenHeight, screenWidth, isDarkTheme)
|
||||||
),
|
: _buildPasswordForm(ref, screenHeight, screenWidth),
|
||||||
),
|
|
||||||
if (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
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
]))
|
if (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
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
])));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Widget _buildPasswordForm(
|
Widget _buildPasswordForm(
|
||||||
WidgetRef ref, double screenHeight, double screenWidth) {
|
WidgetRef ref, double screenHeight, double screenWidth) {
|
||||||
final passwordLocale = ref.watch(localeProvider);
|
final passwordLocale = ref.watch(localeProvider);
|
||||||
@ -310,6 +309,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
final isDarkTheme = themeMode == ThemeMode.dark ||
|
final isDarkTheme = themeMode == ThemeMode.dark ||
|
||||||
(themeMode == ThemeMode.system &&
|
(themeMode == ThemeMode.system &&
|
||||||
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
||||||
|
|
||||||
return Form(
|
return Form(
|
||||||
key: _formKey,
|
key: _formKey,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
@ -334,7 +334,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
// Icons.close,
|
// Icons.close,
|
||||||
Icons.arrow_back_ios,
|
Icons.arrow_back_ios,
|
||||||
size: 24, // Icon size
|
size: 24, // Icon size
|
||||||
color: isDarkTheme ? Colors.white : Colors.black, // Icon color
|
color: isDarkTheme
|
||||||
|
? Colors.white
|
||||||
|
: Colors.black, // Icon color
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
), // Left icon
|
), // Left icon
|
||||||
@ -375,7 +377,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
),
|
),
|
||||||
fontSize: passwordLocale?.languageCode == 'ar' ? 24 : 26,
|
fontSize: passwordLocale?.languageCode == 'ar' ? 24 : 26,
|
||||||
fontWeight: FontWeight.w300,
|
fontWeight: FontWeight.w300,
|
||||||
color: isDarkTheme ? Colors.white : null,
|
color: isDarkTheme ? Colors.white : Colors.black,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
@ -394,7 +396,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontSize:
|
fontSize:
|
||||||
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
||||||
fontWeight: FontWeight.w700,
|
fontWeight: FontWeight.w700,
|
||||||
color: Color(0xFF898C81)),
|
color: Color(0xFF898C81)),
|
||||||
),
|
),
|
||||||
@ -407,7 +409,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontSize:
|
fontSize:
|
||||||
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
||||||
color: Color(0xFF898C81),
|
color: Color(0xFF898C81),
|
||||||
fontWeight: FontWeight.w700),
|
fontWeight: FontWeight.w700),
|
||||||
),
|
),
|
||||||
@ -423,12 +425,13 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
hintText: AppLocalizations.of(context)!.old_password,
|
hintText: AppLocalizations.of(context)!.old_password,
|
||||||
// prefixIcon: Icon(Icons.lock, color: Colors.blue),
|
// prefixIcon: Icon(Icons.lock, color: Colors.blue),
|
||||||
hintStyle: TextStyle(
|
hintStyle: TextStyle(
|
||||||
color: isDarkTheme ? Colors.white : Color(0xFFC3C6CB),
|
color: isDarkTheme ? Colors.white : Color(0xFFC3C6CB),
|
||||||
fontWeight: FontWeight.w400,
|
fontWeight: FontWeight.w400,
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),),
|
),
|
||||||
|
),
|
||||||
prefixIconConstraints: const BoxConstraints(
|
prefixIconConstraints: const BoxConstraints(
|
||||||
maxWidth: 25 + 16 + 10,
|
maxWidth: 25 + 16 + 10,
|
||||||
maxHeight: 25 + (8 * 2),
|
maxHeight: 25 + (8 * 2),
|
||||||
@ -439,11 +442,16 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
end: 10,
|
end: 10,
|
||||||
),
|
),
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
isDarkTheme ? MiscIconAssetPath.lockDark : MiscIconAssetPath.lockLight,
|
isDarkTheme
|
||||||
|
? MiscIconAssetPath.lockDark
|
||||||
|
: MiscIconAssetPath.lockLight,
|
||||||
fit: BoxFit.fitHeight,
|
fit: BoxFit.fitHeight,
|
||||||
height: 25,
|
height: 25,
|
||||||
width: 25,
|
width: 25,
|
||||||
color: isDarkTheme ? Colors.white : MyTheme.topicColor(IndicatorTopic.economy).shade300,
|
color: Color(0xFFB68A34),
|
||||||
|
// color: isDarkTheme
|
||||||
|
// ? Colors.white
|
||||||
|
// : MyTheme.topicColor(IndicatorTopic.economy).shade300,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
@ -460,7 +468,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
: MiscIconAssetPath.visibleOn,
|
: MiscIconAssetPath.visibleOn,
|
||||||
|
|
||||||
color: Color(
|
color: Color(
|
||||||
0xFF9EA2A9,
|
0xFFB68A34,
|
||||||
), // Apply color if needed, but keep in mind `Image.asset` might not support color directly.
|
), // Apply color if needed, but keep in mind `Image.asset` might not support color directly.
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
@ -475,8 +483,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color:
|
color: Color(0xFFB68A34),
|
||||||
MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
// color:
|
||||||
|
// MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||||
width: 1),
|
width: 1),
|
||||||
),
|
),
|
||||||
focusedBorder: OutlineInputBorder(
|
focusedBorder: OutlineInputBorder(
|
||||||
@ -507,12 +516,13 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
hintText: AppLocalizations.of(context)!.enter_new_password,
|
hintText: AppLocalizations.of(context)!.enter_new_password,
|
||||||
// prefixIcon: Icon(Icons.lock, color: Colors.blue),
|
// prefixIcon: Icon(Icons.lock, color: Colors.blue),
|
||||||
hintStyle: TextStyle(
|
hintStyle: TextStyle(
|
||||||
color: Color(0xFFC3C6CB),
|
color: Color(0xFFC3C6CB),
|
||||||
fontWeight: FontWeight.w400,
|
fontWeight: FontWeight.w400,
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),),
|
),
|
||||||
|
),
|
||||||
prefixIconConstraints: const BoxConstraints(
|
prefixIconConstraints: const BoxConstraints(
|
||||||
maxWidth: 25 + 16 + 10,
|
maxWidth: 25 + 16 + 10,
|
||||||
maxHeight: 25 + (8 * 2),
|
maxHeight: 25 + (8 * 2),
|
||||||
@ -527,7 +537,8 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
fit: BoxFit.fitHeight,
|
fit: BoxFit.fitHeight,
|
||||||
height: 25,
|
height: 25,
|
||||||
width: 25,
|
width: 25,
|
||||||
color: MyTheme.topicColor(IndicatorTopic.economy).shade300,
|
color: Color(0xFFB68A34),
|
||||||
|
// color: MyTheme.topicColor(IndicatorTopic.economy).shade300,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
@ -543,9 +554,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
_obscureNewPassword
|
_obscureNewPassword
|
||||||
? MiscIconAssetPath.visibilityOff
|
? MiscIconAssetPath.visibilityOff
|
||||||
: MiscIconAssetPath.visibleOn,
|
: MiscIconAssetPath.visibleOn,
|
||||||
|
color: Color(0xFFB68A34),
|
||||||
color: Color(
|
// color: Color(
|
||||||
0xFF9EA2A9), // Apply color if needed, but keep in mind `Image.asset` might not support color directly.
|
// 0xFF9EA2A9), // Apply color if needed, but keep in mind `Image.asset` might not support color directly.
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
),
|
),
|
||||||
@ -559,8 +570,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color:
|
color: Color(0xFFB68A34),
|
||||||
MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
// color:
|
||||||
|
// MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||||
width: 1),
|
width: 1),
|
||||||
),
|
),
|
||||||
focusedBorder: OutlineInputBorder(
|
focusedBorder: OutlineInputBorder(
|
||||||
@ -589,12 +601,13 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
// hintText: 'Confirm new password',
|
// hintText: 'Confirm new password',
|
||||||
hintText: AppLocalizations.of(context)!.confirm_new_password,
|
hintText: AppLocalizations.of(context)!.confirm_new_password,
|
||||||
hintStyle: TextStyle(
|
hintStyle: TextStyle(
|
||||||
color: Color(0xFFC3C6CB),
|
color: Color(0xFFC3C6CB),
|
||||||
fontWeight: FontWeight.w400,
|
fontWeight: FontWeight.w400,
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),),
|
),
|
||||||
|
),
|
||||||
prefixIconConstraints: const BoxConstraints(
|
prefixIconConstraints: const BoxConstraints(
|
||||||
maxWidth: 25 + 16 + 10,
|
maxWidth: 25 + 16 + 10,
|
||||||
maxHeight: 25 + (8 * 2),
|
maxHeight: 25 + (8 * 2),
|
||||||
@ -609,7 +622,8 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
fit: BoxFit.fitHeight,
|
fit: BoxFit.fitHeight,
|
||||||
height: 25,
|
height: 25,
|
||||||
width: 25,
|
width: 25,
|
||||||
color: MyTheme.topicColor(IndicatorTopic.economy).shade300,
|
color: Color(0xFFB68A34),
|
||||||
|
// color: MyTheme.topicColor(IndicatorTopic.economy).shade300,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
@ -625,9 +639,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
_obscureConfirmPassword
|
_obscureConfirmPassword
|
||||||
? MiscIconAssetPath.visibilityOff
|
? MiscIconAssetPath.visibilityOff
|
||||||
: MiscIconAssetPath.visibleOn,
|
: MiscIconAssetPath.visibleOn,
|
||||||
|
color: Color(0xFFB68A34),
|
||||||
color: Color(
|
// color: Color(
|
||||||
0xFF9EA2A9), // Apply color if needed, but keep in mind `Image.asset` might not support color directly.
|
// 0xFF9EA2A9), // Apply color if needed, but keep in mind `Image.asset` might not support color directly.
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
),
|
),
|
||||||
@ -641,8 +655,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color:
|
color: Color(0xFFB68A34),
|
||||||
MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
// color:
|
||||||
|
// MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||||
width: 1),
|
width: 1),
|
||||||
),
|
),
|
||||||
focusedBorder: OutlineInputBorder(
|
focusedBorder: OutlineInputBorder(
|
||||||
@ -681,7 +696,8 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: Colors.brown[300],
|
backgroundColor: Color(0xFFB68A34),
|
||||||
|
// backgroundColor: Colors.brown[300],
|
||||||
padding: EdgeInsets.symmetric(horizontal: 80, vertical: 16),
|
padding: EdgeInsets.symmetric(horizontal: 80, vertical: 16),
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
@ -698,7 +714,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontSize:
|
fontSize:
|
||||||
passwordLocale?.languageCode == 'ar' ? 14 : 18,
|
passwordLocale?.languageCode == 'ar' ? 14 : 18,
|
||||||
color: Colors.white),
|
color: Colors.white),
|
||||||
),
|
),
|
||||||
SizedBox(width: 2),
|
SizedBox(width: 2),
|
||||||
@ -731,7 +747,8 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildSuccessContent(double screenHeight, double screenWidth) {
|
Widget _buildSuccessContent(
|
||||||
|
double screenHeight, double screenWidth, bool isDarkTheme) {
|
||||||
print('IN');
|
print('IN');
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.all(20.0),
|
padding: EdgeInsets.all(20.0),
|
||||||
@ -753,7 +770,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
),
|
),
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
color: Color(0xFF414042),
|
color: isDarkTheme ? Colors.white : Color(0xFF414042),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 20),
|
SizedBox(height: 20),
|
||||||
@ -779,7 +796,8 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
backgroundColor: WidgetStatePropertyAll(
|
backgroundColor: WidgetStatePropertyAll(
|
||||||
MyTheme.topicColor(IndicatorTopic.social),
|
Color(0xFFB68A34),
|
||||||
|
// MyTheme.topicColor(IndicatorTopic.social),
|
||||||
),
|
),
|
||||||
// surfaceTintColor: MaterialStatePropertyAll(
|
// surfaceTintColor: MaterialStatePropertyAll(
|
||||||
// MyTheme.economy[800],
|
// MyTheme.economy[800],
|
||||||
@ -810,7 +828,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: screenHeight*0.25),
|
SizedBox(height: screenHeight * 0.25),
|
||||||
// Spacer(),
|
// Spacer(),
|
||||||
Center(
|
Center(
|
||||||
// child: Container(
|
// child: Container(
|
||||||
@ -829,4 +847,4 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -14,6 +14,7 @@ import 'package:uae_stat/infrastructure/services/img_asset_paths/banner_asset_pa
|
|||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/profilepage.dart';
|
import 'package:uae_stat/presentation/Screens/profilepage.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
|
// import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
|
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
|
||||||
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
||||||
@ -293,8 +294,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
)
|
)),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
content: Text(
|
content: Text(
|
||||||
context.translate(
|
context.translate(
|
||||||
@ -304,8 +304,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
)
|
)),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
@ -313,24 +312,28 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
setState(() {
|
setState(() {
|
||||||
isRegistering =
|
isRegistering =
|
||||||
false; // Re-enable the button after error
|
false; // Re-enable the button after error
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
style: TextButton.styleFrom(
|
style: TextButton.styleFrom(
|
||||||
backgroundColor:
|
backgroundColor:
|
||||||
Color(0xFFAA8E83), // Set background color
|
Color(0xFFAA8E83), // Set background color
|
||||||
foregroundColor: Colors.white,
|
foregroundColor: Colors.white,
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(10.0), // Set text color
|
BorderRadius.circular(10.0), // Set text color
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Text(
|
||||||
context.translate('Ok', 'حسنًا'),
|
context.translate('Ok', 'حسنًا'),
|
||||||
style: TextStyle(color: Colors.white, fontSize: 16, fontFamily: context.translate(
|
style: TextStyle(
|
||||||
'Roboto',
|
color: Colors.white,
|
||||||
'NotoKufi',
|
fontSize: 16,
|
||||||
),),
|
fontFamily: context.translate(
|
||||||
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -360,8 +363,6 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
double screenheight = MediaQuery.of(context).size.height;
|
double screenheight = MediaQuery.of(context).size.height;
|
||||||
@ -415,7 +416,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
if (didPop) return;
|
if (didPop) return;
|
||||||
context.go('/login'); // Show exit confirmation dialog
|
context.go('/login'); // Show exit confirmation dialog
|
||||||
},
|
},
|
||||||
child:Scaffold(
|
child: Scaffold(
|
||||||
backgroundColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
backgroundColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
child: Stack(children: [
|
child: Stack(children: [
|
||||||
@ -456,13 +457,20 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
Column(children: [
|
Column(children: [
|
||||||
registrationSuccess
|
registrationSuccess
|
||||||
? Padding(
|
? Padding(
|
||||||
padding: const EdgeInsets.all(20.0),
|
padding: const EdgeInsets.only(
|
||||||
|
top: 20.0,
|
||||||
|
left: 20.0,
|
||||||
|
right: 20.0,
|
||||||
|
bottom: 10.0),
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
SizedBox(height: screenheight / 4),
|
SizedBox(height: screenheight / 4),
|
||||||
buildIconContainer(
|
buildIconContainer(Icons.check_circle_rounded,
|
||||||
Icons.check_circle_rounded, Color(0xFF7DAFBC)),
|
Color(0xFFB68A34)
|
||||||
|
// Color(0xFF7DAFBC)
|
||||||
|
|
||||||
|
),
|
||||||
SizedBox(height: 20),
|
SizedBox(height: 20),
|
||||||
Text(
|
Text(
|
||||||
context.translate(
|
context.translate(
|
||||||
@ -476,8 +484,9 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
),
|
),
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF414042)
|
color: isDarkTheme
|
||||||
),
|
? Color(0xFFFFFFFF)
|
||||||
|
: Color(0xFF414042)),
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
Text(
|
Text(
|
||||||
@ -491,14 +500,21 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81),
|
color: isDarkTheme
|
||||||
|
? Color(0xFFFFFFFF)
|
||||||
|
: Color(0xFF898C81),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
onPressed: () => {context.go('/login')},
|
onPressed: () => {context.go('/login')},
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: isDarkTheme ? Color(0xFF24B4FB) : Color(0xFFAA8E83), // Background color
|
backgroundColor: Color(0xFFB68A34),
|
||||||
|
|
||||||
|
// isDarkTheme
|
||||||
|
// ? Color(0xFF24B4FB)
|
||||||
|
// : Color(
|
||||||
|
// 0xFFAA8E83), // Background color
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius: BorderRadius.circular(
|
borderRadius: BorderRadius.circular(
|
||||||
12), // Border radius
|
12), // Border radius
|
||||||
@ -520,14 +536,14 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
Center(
|
Center(
|
||||||
child: Container(
|
child: Container(
|
||||||
height: screenheight / 16,
|
height: screenheight / 16,
|
||||||
width: screenwidth / 2.5,
|
// width: screenwidth / 2.5,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
image: DecorationImage(
|
image: DecorationImage(
|
||||||
image: AssetImage(
|
image: AssetImage(isDarkTheme
|
||||||
isDarkTheme
|
? BannerAssetPath.fcscLogoDark
|
||||||
? BannerAssetPath.fcscLogoDark
|
: BannerAssetPath
|
||||||
: BannerAssetPath.fcscLogoLight), // Background image asset
|
.fcscLogoLight), // Background image asset
|
||||||
fit: BoxFit.fill,
|
// fit: BoxFit.fill,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
))
|
))
|
||||||
@ -556,7 +572,9 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
),
|
),
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF414042)),
|
color: isDarkTheme
|
||||||
|
? Color(0xFFFFFFFF)
|
||||||
|
: Color(0xFF414042)),
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
Text(
|
Text(
|
||||||
@ -570,7 +588,9 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
color: isDarkTheme ? Color(0xFFEEEEEE) : Color(0xFF898C81),
|
color: isDarkTheme
|
||||||
|
? Color(0xFFEEEEEE)
|
||||||
|
: Color(0xFF898C81),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
@ -590,11 +610,15 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
context.translate(
|
context.translate(
|
||||||
'Retry', 'أعد المحاولة'),
|
'Retry', 'أعد المحاولة'),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
color: isDarkTheme ? Color(0xFF24B4FB) : Color(0xFFAA8E83),
|
color: Color(0xFFB68A34),
|
||||||
|
|
||||||
|
// color: isDarkTheme
|
||||||
|
// ? Color(0xFF24B4FB)
|
||||||
|
// : Color(0xFFAA8E83),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -602,14 +626,14 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
Center(
|
Center(
|
||||||
child: Container(
|
child: Container(
|
||||||
height: screenheight / 16,
|
height: screenheight / 16,
|
||||||
width: screenwidth / 2.5,
|
// width: screenwidth / 2.5,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
image: DecorationImage(
|
image: DecorationImage(
|
||||||
image: AssetImage(
|
image: AssetImage(isDarkTheme
|
||||||
isDarkTheme
|
? BannerAssetPath.fcscLogoDark
|
||||||
? BannerAssetPath.fcscLogoDark
|
: BannerAssetPath
|
||||||
: BannerAssetPath.fcscLogoLight), // Background image asset
|
.fcscLogoLight), // Background image asset
|
||||||
fit: BoxFit.fill,
|
// fit: BoxFit.fill,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
))
|
))
|
||||||
@ -620,8 +644,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
key: _formKey,
|
key: _formKey,
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment:
|
// mainAxisAlignment:
|
||||||
MainAxisAlignment.center,
|
// MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
SizedBox(height: screenheight / 60),
|
SizedBox(height: screenheight / 60),
|
||||||
Text(
|
Text(
|
||||||
@ -629,13 +653,15 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
AppLocalizations.of(context)!
|
AppLocalizations.of(context)!
|
||||||
.register_title,
|
.register_title,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontSize: 32,
|
fontSize: 32,
|
||||||
fontWeight: FontWeight.w400,
|
fontWeight: FontWeight.w400,
|
||||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF000000),
|
color: isDarkTheme
|
||||||
|
? Color(0xFFFFFFFF)
|
||||||
|
: Color(0xFF000000),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
@ -649,12 +675,14 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
),
|
),
|
||||||
fontSize:
|
fontSize:
|
||||||
context.translate(18.0, 14.0),
|
context.translate(18.0, 14.0),
|
||||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81),
|
color: isDarkTheme
|
||||||
|
? Color(0xFFFFFFFF)
|
||||||
|
: Color(0xFF898C81),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
SizedBox(height: 20),
|
SizedBox(height: 15),
|
||||||
// Display this if registration is pending approval
|
// Display this if registration is pending approval
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(
|
padding: const EdgeInsets.only(
|
||||||
@ -667,9 +695,13 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
// focusNode: _focusNodes[0],
|
// focusNode: _focusNodes[0],
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
filled: true,
|
filled: true,
|
||||||
fillColor: isDarkTheme ? const Color(0xFF000000) : Colors.white,
|
fillColor: isDarkTheme
|
||||||
|
? const Color(0xFF000000)
|
||||||
|
: Colors.white,
|
||||||
errorStyle: TextStyle(
|
errorStyle: TextStyle(
|
||||||
color: isDarkTheme ? Color(0xFFFFA200) : Color(0xFFb22222),
|
color: isDarkTheme
|
||||||
|
? Color(0xFFFFA200)
|
||||||
|
: Color(0xFFb22222),
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
@ -711,7 +743,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(10),
|
BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: Color(0xFFB68A34), // ✅ border
|
color: Color(
|
||||||
|
0xFFB68A34), // ✅ border
|
||||||
width: 1), // Enabled border
|
width: 1), // Enabled border
|
||||||
),
|
),
|
||||||
focusedBorder: OutlineInputBorder(
|
focusedBorder: OutlineInputBorder(
|
||||||
@ -743,7 +776,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
color: const Color(0xFFC3C6CB),
|
color: const Color(0xFFC3C6CB),
|
||||||
fontSize: registerLocale
|
fontSize: registerLocale
|
||||||
?.languageCode ==
|
?.languageCode ==
|
||||||
'ar'
|
'ar'
|
||||||
@ -770,9 +803,13 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
// focusNode: _focusNodes[1],
|
// focusNode: _focusNodes[1],
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
filled: true,
|
filled: true,
|
||||||
fillColor: isDarkTheme ? const Color(0xFF000000) : Colors.white,
|
fillColor: isDarkTheme
|
||||||
|
? const Color(0xFF000000)
|
||||||
|
: Colors.white,
|
||||||
errorStyle: TextStyle(
|
errorStyle: TextStyle(
|
||||||
color: isDarkTheme ? Color(0xFFFFA200) : Color(0xFFb22222),
|
color: isDarkTheme
|
||||||
|
? Color(0xFFFFA200)
|
||||||
|
: Color(0xFFb22222),
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
@ -842,7 +879,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
color: const Color(0xFFC3C6CB),
|
color: const Color(0xFFC3C6CB),
|
||||||
fontSize: registerLocale
|
fontSize: registerLocale
|
||||||
?.languageCode ==
|
?.languageCode ==
|
||||||
'ar'
|
'ar'
|
||||||
@ -873,9 +910,13 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
obscureText: _obscurePassword,
|
obscureText: _obscurePassword,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
filled: true,
|
filled: true,
|
||||||
fillColor: isDarkTheme ? const Color(0xFF000000) : Colors.white,
|
fillColor: isDarkTheme
|
||||||
|
? const Color(0xFF000000)
|
||||||
|
: Colors.white,
|
||||||
errorStyle: TextStyle(
|
errorStyle: TextStyle(
|
||||||
color: isDarkTheme ? Color(0xFFFFA200) : Color(0xFFb22222),
|
color: isDarkTheme
|
||||||
|
? Color(0xFFFFA200)
|
||||||
|
: Color(0xFFb22222),
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
@ -977,7 +1018,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
color: const Color(0xFFC3C6CB),
|
color: const Color(0xFFC3C6CB),
|
||||||
fontSize: registerLocale
|
fontSize: registerLocale
|
||||||
?.languageCode ==
|
?.languageCode ==
|
||||||
'ar'
|
'ar'
|
||||||
@ -991,7 +1032,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
MaxLengthEnforcement.enforced,
|
MaxLengthEnforcement.enforced,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 15),
|
SizedBox(height: 10),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(
|
padding: const EdgeInsets.only(
|
||||||
top: 5.0,
|
top: 5.0,
|
||||||
@ -1006,9 +1047,13 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
_obscureConfirmPassword,
|
_obscureConfirmPassword,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
filled: true,
|
filled: true,
|
||||||
fillColor: isDarkTheme ? const Color(0xFF000000) : Colors.white,
|
fillColor: isDarkTheme
|
||||||
|
? const Color(0xFF000000)
|
||||||
|
: Colors.white,
|
||||||
errorStyle: TextStyle(
|
errorStyle: TextStyle(
|
||||||
color: isDarkTheme ? Color(0xFFFFA200) : Color(0xFFb22222),
|
color: isDarkTheme
|
||||||
|
? Color(0xFFFFA200)
|
||||||
|
: Color(0xFFb22222),
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
@ -1099,7 +1144,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
color: const Color(0xFFC3C6CB),
|
color: const Color(0xFFC3C6CB),
|
||||||
fontSize: registerLocale
|
fontSize: registerLocale
|
||||||
?.languageCode ==
|
?.languageCode ==
|
||||||
'ar'
|
'ar'
|
||||||
@ -1140,8 +1185,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
},
|
},
|
||||||
side: BorderSide(
|
side: BorderSide(
|
||||||
color: showError
|
color: showError
|
||||||
? Color(0xFFD83731)
|
? Color(0xFFD83731)
|
||||||
: Color(0xFFB68A34),
|
: Color(0xFFB68A34),
|
||||||
width: 1,
|
width: 1,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -1159,7 +1204,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
.agree,
|
.agree,
|
||||||
// text: 'I agree to ',
|
// text: 'I agree to ',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily:
|
||||||
|
context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
@ -1170,7 +1216,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
'ar'
|
'ar'
|
||||||
? 12
|
? 12
|
||||||
: 14,
|
: 14,
|
||||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81), // Change to your desired color
|
color: isDarkTheme
|
||||||
|
? Color(0xFFFFFFFF)
|
||||||
|
: Color(
|
||||||
|
0xFF898C81), // Change to your desired color
|
||||||
),
|
),
|
||||||
children: [
|
children: [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
@ -1184,7 +1233,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
.terms_conditions,
|
.terms_conditions,
|
||||||
// text: 'Terms & Conditions',
|
// text: 'Terms & Conditions',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context
|
||||||
|
.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
@ -1197,7 +1247,11 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
fontWeight:
|
fontWeight:
|
||||||
FontWeight
|
FontWeight
|
||||||
.bold,
|
.bold,
|
||||||
color:isDarkTheme ? Color(0xFFB68A35) : Color(0xFF985400),
|
color: isDarkTheme
|
||||||
|
? Color(
|
||||||
|
0xFFB68A35)
|
||||||
|
: Color(
|
||||||
|
0xFF985400),
|
||||||
// Makes the text bold
|
// Makes the text bold
|
||||||
// decoration:
|
// decoration:
|
||||||
// TextDecoration.underline,
|
// TextDecoration.underline,
|
||||||
@ -1212,11 +1266,16 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
.of(context)!
|
.of(context)!
|
||||||
.t_and,
|
.t_and,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context
|
||||||
|
.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81),
|
color: isDarkTheme
|
||||||
|
? Color(
|
||||||
|
0xFFFFFFFF)
|
||||||
|
: Color(
|
||||||
|
0xFF898C81),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
@ -1229,7 +1288,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
.of(context)!
|
.of(context)!
|
||||||
.privacy_policy,
|
.privacy_policy,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context
|
||||||
|
.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
@ -1242,7 +1302,11 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
'ar'
|
'ar'
|
||||||
? 12
|
? 12
|
||||||
: 14,
|
: 14,
|
||||||
color: isDarkTheme ? Color(0xFFB68A35) : Color(0xFF985400),
|
color: isDarkTheme
|
||||||
|
? Color(
|
||||||
|
0xFFB68A35)
|
||||||
|
: Color(
|
||||||
|
0xFF985400),
|
||||||
// decoration:
|
// decoration:
|
||||||
// TextDecoration.underline,
|
// TextDecoration.underline,
|
||||||
decorationColor:
|
decorationColor:
|
||||||
@ -1256,7 +1320,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
.of(context)!
|
.of(context)!
|
||||||
.conditions,
|
.conditions,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context
|
||||||
|
.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
@ -1267,7 +1332,11 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
'ar'
|
'ar'
|
||||||
? 12
|
? 12
|
||||||
: 14,
|
: 14,
|
||||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color( 0xFF898C81), // Change to your desired color
|
color: isDarkTheme
|
||||||
|
? Color(
|
||||||
|
0xFFFFFFFF)
|
||||||
|
: Color(
|
||||||
|
0xFF898C81), // Change to your desired color
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -1300,7 +1369,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
context.translate(
|
context.translate(
|
||||||
'Required', 'مطلوب'),
|
'Required', 'مطلوب'),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily:
|
||||||
|
context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
@ -1329,7 +1399,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
? null
|
? null
|
||||||
: _registerUser,
|
: _registerUser,
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: Color(0xFFB68A34), // Brownish color for Register
|
backgroundColor: Color(
|
||||||
|
0xFFB68A34), // Brownish color for Register
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(10),
|
BorderRadius.circular(10),
|
||||||
@ -1344,76 +1415,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
context)!
|
context)!
|
||||||
.register_title,
|
.register_title,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily:
|
||||||
'Roboto',
|
context.translate(
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
fontSize: registerLocale
|
|
||||||
?.languageCode ==
|
|
||||||
'ar'
|
|
||||||
? 14
|
|
||||||
: 16,
|
|
||||||
color: Colors.white
|
|
||||||
),
|
|
||||||
),
|
|
||||||
SizedBox(width: 8),
|
|
||||||
Icon(
|
|
||||||
Icons
|
|
||||||
.chevron_right_outlined,
|
|
||||||
color: Colors.white, // Set your desired color here
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
SizedBox(height: 15),
|
|
||||||
Text(
|
|
||||||
AppLocalizations.of(context)!
|
|
||||||
.account_confirmation,
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
fontWeight: FontWeight.w500,
|
|
||||||
fontSize:
|
|
||||||
registerLocale?.languageCode ==
|
|
||||||
'ar'
|
|
||||||
? 12
|
|
||||||
: 14,
|
|
||||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
SizedBox(height: 15),
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.only(
|
|
||||||
top: 5.0,
|
|
||||||
bottom: 10,
|
|
||||||
left: 30,
|
|
||||||
right: 30),
|
|
||||||
child: SizedBox(
|
|
||||||
width: screenwidth / 1,
|
|
||||||
child: ElevatedButton(
|
|
||||||
onPressed: () {
|
|
||||||
context.pop();
|
|
||||||
},
|
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
backgroundColor: Color(0xFFB68A34), // Blueish color for Login
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius:
|
|
||||||
BorderRadius.circular(10),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
child: Row(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
AppLocalizations.of(
|
|
||||||
context)!
|
|
||||||
.login_title,
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
@ -1428,17 +1431,94 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
Icon(
|
Icon(
|
||||||
Icons
|
Icons
|
||||||
.chevron_right_outlined,
|
.chevron_right_outlined,
|
||||||
color: Colors.white, // Set your desired color here
|
color: Colors
|
||||||
|
.white, // Set your desired color here
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
SizedBox(height: 5),
|
||||||
|
Text(
|
||||||
|
AppLocalizations.of(context)!
|
||||||
|
.account_confirmation,
|
||||||
|
style: TextStyle(
|
||||||
|
fontFamily: context.translate(
|
||||||
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize:
|
||||||
|
registerLocale?.languageCode ==
|
||||||
|
'ar'
|
||||||
|
? 12
|
||||||
|
: 14,
|
||||||
|
color: isDarkTheme
|
||||||
|
? Color(0xFFFFFFFF)
|
||||||
|
: Color(0xFF898C81),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(height: 5),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(
|
||||||
|
top: 5.0,
|
||||||
|
bottom: 10,
|
||||||
|
left: 30,
|
||||||
|
right: 30),
|
||||||
|
child: SizedBox(
|
||||||
|
width: screenwidth / 1,
|
||||||
|
child: ElevatedButton(
|
||||||
|
onPressed: () {
|
||||||
|
context.pop();
|
||||||
|
},
|
||||||
|
style: ElevatedButton.styleFrom(
|
||||||
|
backgroundColor: Color(
|
||||||
|
0xFFB68A34), // Blueish color for Login
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.circular(10),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
AppLocalizations.of(
|
||||||
|
context)!
|
||||||
|
.login_title,
|
||||||
|
style: TextStyle(
|
||||||
|
fontFamily:
|
||||||
|
context.translate(
|
||||||
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
fontSize: registerLocale
|
||||||
|
?.languageCode ==
|
||||||
|
'ar'
|
||||||
|
? 14
|
||||||
|
: 16,
|
||||||
|
color: Colors.white),
|
||||||
|
),
|
||||||
|
SizedBox(width: 8),
|
||||||
|
Icon(
|
||||||
|
Icons
|
||||||
|
.chevron_right_outlined,
|
||||||
|
color: Colors
|
||||||
|
.white, // Set your desired color here
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Spacer(),
|
||||||
|
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 10,
|
height: 10,
|
||||||
),
|
),
|
||||||
Center(
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(20.0),
|
||||||
// child: Container(
|
// child: Container(
|
||||||
// height: screenheight / 16,
|
// height: screenheight / 16,
|
||||||
// width: screenwidth / 3,
|
// width: screenwidth / 3,
|
||||||
@ -1452,9 +1532,9 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
// )
|
// )
|
||||||
child: fcscBanner,
|
child: fcscBanner,
|
||||||
),
|
),
|
||||||
SizedBox(
|
// SizedBox(
|
||||||
height: 20,
|
// height: 5,
|
||||||
),
|
// ),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -1491,4 +1571,4 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
|||||||
)),
|
)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5,6 +5,7 @@ import 'package:external_repos/external_repos.dart';
|
|||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
@ -23,7 +24,7 @@ import 'package:uae_stat/presentation/components/indicators/locale_provider.dart
|
|||||||
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
||||||
import 'package:uae_stat/presentation/routes/bottom_bar_routes/tab_routes/home_route.dart';
|
import 'package:uae_stat/presentation/routes/bottom_bar_routes/tab_routes/home_route.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 '../components/my_bottom_nav_bar.dart';
|
import '../components/my_bottom_nav_bar.dart';
|
||||||
import 'auth_verification/changepassword.dart';
|
import 'auth_verification/changepassword.dart';
|
||||||
import 'demo_home.dart';
|
import 'demo_home.dart';
|
||||||
@ -71,14 +72,17 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
|
|
||||||
// Date format for the display
|
// Date format for the display
|
||||||
final DateFormat _dateFormat = DateFormat('yyyy-MM-dd');
|
final DateFormat _dateFormat = DateFormat('yyyy-MM-dd');
|
||||||
final List<String> _countries = [
|
// final List<String> _countries = [
|
||||||
'United Arab Emirates',
|
// 'United Arab Emirates',
|
||||||
'United States',
|
// 'United States',
|
||||||
'India',
|
// 'India',
|
||||||
'Canada'
|
// 'Canada'
|
||||||
];
|
// ];
|
||||||
final List<String> preferred_language = ['English', 'Arabic'];
|
final List<String> preferred_language = ['English', 'Arabic'];
|
||||||
String? _selectedCountry;
|
// String? _selectedCountry;
|
||||||
|
ISOCountry? _selectedCountry;
|
||||||
|
String? preferredLang;
|
||||||
|
|
||||||
String? _selectedLanguage;
|
String? _selectedLanguage;
|
||||||
bool isChecked = false;
|
bool isChecked = false;
|
||||||
bool showError = false;
|
bool showError = false;
|
||||||
@ -98,6 +102,8 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
super.initState();
|
super.initState();
|
||||||
// print(widget.userId);
|
// print(widget.userId);
|
||||||
|
|
||||||
|
_selectedCountry ??= ISOCountry.numeric784;
|
||||||
|
|
||||||
final themeMode = ref.read(themeProvider);
|
final themeMode = ref.read(themeProvider);
|
||||||
isDarkTheme = themeMode == ThemeMode.dark ||
|
isDarkTheme = themeMode == ThemeMode.dark ||
|
||||||
(themeMode == ThemeMode.system &&
|
(themeMode == ThemeMode.system &&
|
||||||
@ -198,10 +204,10 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
_isLoading = true; // Start loading
|
_isLoading = true; // Start loading
|
||||||
});
|
});
|
||||||
final XFile? pickedFile =
|
final XFile? pickedFile =
|
||||||
await _picker.pickImage(source: ImageSource.gallery);
|
await _picker.pickImage(source: ImageSource.gallery);
|
||||||
if (pickedFile != null) {
|
if (pickedFile != null) {
|
||||||
final String fileExtension =
|
final String fileExtension =
|
||||||
pickedFile.path.split('.').last.toLowerCase();
|
pickedFile.path.split('.').last.toLowerCase();
|
||||||
if (fileExtension == 'jpg' ||
|
if (fileExtension == 'jpg' ||
|
||||||
fileExtension == 'jpeg' ||
|
fileExtension == 'jpeg' ||
|
||||||
fileExtension == 'png' ||
|
fileExtension == 'png' ||
|
||||||
@ -212,13 +218,15 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
ScaffoldMessenger.of(context).showSnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
SnackBar(content: Text('Please select a JPG, JPEG, or PNG file.',
|
SnackBar(
|
||||||
style: TextStyle(
|
content: Text(
|
||||||
fontFamily: context.translate(
|
'Please select a JPG, JPEG, or PNG file.',
|
||||||
'Roboto',
|
style: TextStyle(
|
||||||
'NotoKufi',
|
fontFamily: context.translate(
|
||||||
)
|
'Roboto',
|
||||||
),)),
|
'NotoKufi',
|
||||||
|
)),
|
||||||
|
)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -245,7 +253,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
return Theme(
|
return Theme(
|
||||||
data: Theme.of(context).copyWith(
|
data: Theme.of(context).copyWith(
|
||||||
dialogBackgroundColor:
|
dialogBackgroundColor:
|
||||||
Colors.white, // Background color of the date picker
|
Colors.white, // Background color of the date picker
|
||||||
textButtonTheme: TextButtonThemeData(
|
textButtonTheme: TextButtonThemeData(
|
||||||
style: ButtonStyle(
|
style: ButtonStyle(
|
||||||
shape: WidgetStateProperty.all(RoundedRectangleBorder(
|
shape: WidgetStateProperty.all(RoundedRectangleBorder(
|
||||||
@ -336,8 +344,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
// String username = 'users55538';
|
// String username = 'users55538';
|
||||||
// String email = 'surendarsuri30@gmail.com';
|
// String email = 'surendarsuri30@gmail.com';
|
||||||
String dateOfBirth = _dateController.text; // in DD/MM/YYYY format
|
String dateOfBirth = _dateController.text; // in DD/MM/YYYY format
|
||||||
String countryRegion = _selectedCountry ?? '';
|
// String countryRegion = _selectedCountry ?? '';
|
||||||
String preferredLang = _selectedLanguage == 'English' ? 'en' : 'ar';
|
String countryRegion = context.translate(
|
||||||
|
_selectedCountry?.nameEN ?? '',
|
||||||
|
_selectedCountry?.nameAR ?? '',
|
||||||
|
);
|
||||||
|
|
||||||
|
preferredLang = _selectedLanguage == 'English' ? 'en' : 'ar';
|
||||||
bool termsAccepted = isChecked;
|
bool termsAccepted = isChecked;
|
||||||
|
|
||||||
// Parse the date from dd/MM/yyyy format and convert to yyyy-MM-dd
|
// Parse the date from dd/MM/yyyy format and convert to yyyy-MM-dd
|
||||||
@ -347,14 +360,14 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
|
|
||||||
// Create a multipart request
|
// Create a multipart request
|
||||||
final uri =
|
final uri =
|
||||||
Uri.parse('${_pb.baseUrl}/api/collections/users/records/$userID');
|
Uri.parse('${_pb.baseUrl}/api/collections/users/records/$userID');
|
||||||
final request = http.MultipartRequest('PATCH', uri);
|
final request = http.MultipartRequest('PATCH', uri);
|
||||||
|
|
||||||
// Add other fields
|
// Add other fields
|
||||||
request.fields['full_name'] = fullName;
|
request.fields['full_name'] = fullName;
|
||||||
request.fields['dob'] = formattedDob;
|
request.fields['dob'] = formattedDob;
|
||||||
request.fields['country_region'] = countryRegion;
|
request.fields['country_region'] = countryRegion;
|
||||||
request.fields['language'] = preferredLang;
|
request.fields['language'] = preferredLang!;
|
||||||
request.fields['is_profile_completed'] = 'True';
|
request.fields['is_profile_completed'] = 'True';
|
||||||
|
|
||||||
// Add the file, if available
|
// Add the file, if available
|
||||||
@ -371,14 +384,15 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
// Send the request
|
// Send the request
|
||||||
final response = await request.send();
|
final response = await request.send();
|
||||||
print(response);
|
print(response);
|
||||||
ScaffoldMessenger.of(context).showSnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
|
||||||
SnackBar(content: Text(AppLocalizations.of(context)!.profile_updated_successfully,
|
content: Text(
|
||||||
style: TextStyle(
|
AppLocalizations.of(context)!.profile_updated_successfully,
|
||||||
fontFamily: context.translate(
|
style: TextStyle(
|
||||||
'Roboto',
|
fontFamily: context.translate(
|
||||||
'NotoKufi',
|
'Roboto',
|
||||||
)
|
'NotoKufi',
|
||||||
),)));
|
)),
|
||||||
|
)));
|
||||||
// **Set Default Locale in Provider**
|
// **Set Default Locale in Provider**
|
||||||
print('_selectedLanguage $_selectedLanguage');
|
print('_selectedLanguage $_selectedLanguage');
|
||||||
preferredLang = _selectedLanguage == 'English' ? 'en' : 'ar';
|
preferredLang = _selectedLanguage == 'English' ? 'en' : 'ar';
|
||||||
@ -397,12 +411,17 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
context.go('/welcomePage');
|
context.go('/welcomePage');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
ScaffoldMessenger.of(context).showSnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
SnackBar(content: Text(context.translate("Failed to update profile: $error",'$error فشل في تحديث الملف الشخصي: '),style: TextStyle(
|
SnackBar(
|
||||||
fontFamily: context.translate(
|
content: Text(
|
||||||
'Roboto',
|
context.translate("Failed to update profile: $error",
|
||||||
'NotoKufi',
|
'$error فشل في تحديث الملف الشخصي: '),
|
||||||
)
|
style: TextStyle(
|
||||||
),)),);
|
fontFamily: context.translate(
|
||||||
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
)),
|
||||||
|
)),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -444,21 +463,27 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
'Logout',
|
'Logout',
|
||||||
'تسجيل الخروج',
|
'تسجيل الخروج',
|
||||||
),
|
),
|
||||||
style:
|
style: TextStyle(
|
||||||
TextStyle(color: Color(0xFF898C81), fontWeight: FontWeight.w700,fontFamily: context.translate(
|
color: Color(0xFF898C81),
|
||||||
'Roboto',
|
fontWeight: FontWeight.w700,
|
||||||
'NotoKufi',
|
fontFamily: context.translate(
|
||||||
),),
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
content: Text(
|
content: Text(
|
||||||
context.translate(
|
context.translate(
|
||||||
'Are you sure you want to logout?',
|
'Are you sure you want to logout?',
|
||||||
'هل أنت متأكد أنك تريد تسجيل الخروج؟',
|
'هل أنت متأكد أنك تريد تسجيل الخروج؟',
|
||||||
),
|
),
|
||||||
style: TextStyle(color: Color(0xFF898C81),fontFamily: context.translate(
|
style: TextStyle(
|
||||||
'Roboto',
|
color: Color(0xFF898C81),
|
||||||
'NotoKufi',
|
fontFamily: context.translate(
|
||||||
),),
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
@ -477,10 +502,11 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
'إلغاء',
|
'إلغاء',
|
||||||
),
|
),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Color(0xFFAA8E83),fontFamily: context.translate(
|
color: Color(0xFFAA8E83),
|
||||||
'Roboto',
|
fontFamily: context.translate(
|
||||||
'NotoKufi',
|
'Roboto',
|
||||||
), // Text color
|
'NotoKufi',
|
||||||
|
), // Text color
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -499,10 +525,11 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
'تسجيل الخروج',
|
'تسجيل الخروج',
|
||||||
),
|
),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white, fontFamily: context.translate(
|
color: Colors.white,
|
||||||
'Roboto',
|
fontFamily: context.translate(
|
||||||
'NotoKufi',
|
'Roboto',
|
||||||
),// Text color
|
'NotoKufi',
|
||||||
|
), // Text color
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -528,6 +555,15 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
(themeMode == ThemeMode.system &&
|
(themeMode == ThemeMode.system &&
|
||||||
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
||||||
|
|
||||||
|
final searchTerm = '';
|
||||||
|
|
||||||
|
final _countries = ISOCountry.values.where((country) {
|
||||||
|
final query = searchTerm.trim().toLowerCase();
|
||||||
|
if (query.isEmpty) return true; // 🔥 show all if search is empty
|
||||||
|
return country.nameEN.toLowerCase().contains(query) ||
|
||||||
|
country.nameAR.toLowerCase().contains(query);
|
||||||
|
}).toList();
|
||||||
|
|
||||||
return PopScope(
|
return PopScope(
|
||||||
canPop: false, // Allow back navigation only if not login screen
|
canPop: false, // Allow back navigation only if not login screen
|
||||||
onPopInvokedWithResult: (didPop, result) {
|
onPopInvokedWithResult: (didPop, result) {
|
||||||
@ -541,16 +577,23 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
elevation: 0,
|
elevation: 0,
|
||||||
leading: IconButton(
|
leading: IconButton(
|
||||||
icon: Icon(Icons.arrow_back_ios_new, color: Colors.black),
|
icon: Icon(Icons.arrow_back_ios_new, color: Colors.black),
|
||||||
onPressed: () {
|
onPressed: () async {
|
||||||
context.go('/');
|
final prefs = await SharedPreferences.getInstance();
|
||||||
|
await _authRepo.logout();
|
||||||
|
prefs.clear();
|
||||||
|
context.go('/login');
|
||||||
|
// context.go('/');
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
title: Text(
|
title: Text(
|
||||||
AppLocalizations.of(context)!.my_profile,
|
AppLocalizations.of(context)!.my_profile,
|
||||||
style: TextStyle(color: Color(0xFF985400),fontFamily: context.translate(
|
style: TextStyle(
|
||||||
'Roboto',
|
color: Color(0xFF985400),
|
||||||
'NotoKufi',
|
fontFamily: context.translate(
|
||||||
),),
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
Consumer(
|
Consumer(
|
||||||
@ -633,7 +676,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
backgroundImage: _profileImage != null
|
backgroundImage: _profileImage != null
|
||||||
? FileImage(_profileImage!)
|
? FileImage(_profileImage!)
|
||||||
: AssetImage("assets/edit_profile/profile.png")
|
: AssetImage("assets/edit_profile/profile.png")
|
||||||
as ImageProvider,
|
as ImageProvider,
|
||||||
child: Align(
|
child: Align(
|
||||||
alignment: Alignment.bottomRight,
|
alignment: Alignment.bottomRight,
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
@ -657,7 +700,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
child: CircularProgressIndicator(
|
child: CircularProgressIndicator(
|
||||||
strokeWidth: 2,
|
strokeWidth: 2,
|
||||||
valueColor:
|
valueColor:
|
||||||
AlwaysStoppedAnimation<Color>(Colors.grey),
|
AlwaysStoppedAnimation<Color>(Colors.grey),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -745,10 +788,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
Text(
|
Text(
|
||||||
AppLocalizations.of(context)!.full_name,
|
AppLocalizations.of(context)!.full_name,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 16, fontWeight: FontWeight.w500,fontFamily: context.translate(
|
fontSize: 16,
|
||||||
'Roboto',
|
fontWeight: FontWeight.w500,
|
||||||
'NotoKufi',
|
fontFamily: context.translate(
|
||||||
),),
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -776,8 +822,11 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: isDarkTheme ? Colors.white : MyTheme.topicColor(IndicatorTopic.economy)
|
color: Color(0xFFB68A34),
|
||||||
.shade400,
|
// color: isDarkTheme
|
||||||
|
// ? Colors.white
|
||||||
|
// : MyTheme.topicColor(IndicatorTopic.economy)
|
||||||
|
// .shade400,
|
||||||
width: 1), // Enabled border
|
width: 1), // Enabled border
|
||||||
),
|
),
|
||||||
hintText: _showHints[2] ? 'Enter the name' : null,
|
hintText: _showHints[2] ? 'Enter the name' : null,
|
||||||
@ -791,7 +840,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
),
|
),
|
||||||
border: OutlineInputBorder(
|
border: OutlineInputBorder(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
color: Color(0xFFB68A34),
|
||||||
|
// color:
|
||||||
|
// isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
||||||
),
|
),
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
),
|
),
|
||||||
@ -807,12 +858,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
Text(
|
Text(
|
||||||
AppLocalizations.of(context)!.dob,
|
AppLocalizations.of(context)!.dob,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontSize: 16, fontWeight: FontWeight.w500,
|
fontSize: 16,
|
||||||
color:isDarkTheme ? Colors.white : null,
|
fontWeight: FontWeight.w500,
|
||||||
|
color: isDarkTheme ? Colors.white : null,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -828,14 +880,19 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color:isDarkTheme ? Colors.white :
|
color: Color(0xFFB68A34),
|
||||||
MyTheme.topicColor(IndicatorTopic.economy)
|
// color: isDarkTheme
|
||||||
.shade400,
|
// ? Colors.white
|
||||||
|
// : MyTheme.topicColor(IndicatorTopic.economy)
|
||||||
|
// .shade400,
|
||||||
width: 1), // Enabled border
|
width: 1), // Enabled border
|
||||||
),
|
),
|
||||||
border: OutlineInputBorder(
|
border: OutlineInputBorder(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color:isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
color: Color(0xFFB68A34),
|
||||||
|
// color: isDarkTheme
|
||||||
|
// ? Colors.white
|
||||||
|
// : Color(0xFF7296BE),
|
||||||
),
|
),
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
),
|
),
|
||||||
@ -846,7 +903,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
color: isDarkTheme ? Colors.white : Color(0xFFC3C6CB),
|
color:
|
||||||
|
isDarkTheme ? Colors.white : Color(0xFFC3C6CB),
|
||||||
|
// color: Color(0xFFB68A34),
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
),
|
),
|
||||||
|
|
||||||
@ -854,11 +913,11 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
width: 45,
|
width: 45,
|
||||||
padding: EdgeInsets.only(right: 1),
|
padding: EdgeInsets.only(right: 1),
|
||||||
alignment:
|
alignment:
|
||||||
Alignment.center, // Center the icon vertically
|
Alignment.center, // Center the icon vertically
|
||||||
child: Icon(
|
child: Icon(
|
||||||
Icons.keyboard_arrow_down_sharp,
|
Icons.keyboard_arrow_down_sharp,
|
||||||
color:
|
color:
|
||||||
_isHoveringDate ? Colors.black : Colors.grey,
|
_isHoveringDate ? Colors.black : Colors.grey,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -878,9 +937,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontSize: 16, fontWeight: FontWeight.w500,
|
fontSize: 16,
|
||||||
color: isDarkTheme ? Colors.white : null
|
fontWeight: FontWeight.w500,
|
||||||
),
|
color: isDarkTheme ? Colors.white : null),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -890,20 +949,26 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
setState(() => _isHoveringDropdown = true),
|
setState(() => _isHoveringDropdown = true),
|
||||||
onExit: (_) =>
|
onExit: (_) =>
|
||||||
setState(() => _isHoveringDropdown = false),
|
setState(() => _isHoveringDropdown = false),
|
||||||
child: DropdownButtonFormField<String>(
|
|
||||||
|
child: DropdownButtonFormField<ISOCountry>(
|
||||||
|
isExpanded: true,
|
||||||
value: _selectedCountry,
|
value: _selectedCountry,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: isDarkTheme ? Colors.white :
|
color: Color(0xFFB68A34),
|
||||||
MyTheme.topicColor(IndicatorTopic.economy)
|
// color: Colors.red,
|
||||||
.shade400,
|
// : MyTheme.topicColor(
|
||||||
|
// IndicatorTopic.economy).shade400,
|
||||||
width: 1), // Enabled border
|
width: 1), // Enabled border
|
||||||
),
|
),
|
||||||
border: OutlineInputBorder(
|
border: OutlineInputBorder(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
color: Color(0xFFB68A34),
|
||||||
|
// color: isDarkTheme
|
||||||
|
// ? Colors.white
|
||||||
|
// : Color(0xFF7296BE),
|
||||||
),
|
),
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
),
|
),
|
||||||
@ -913,25 +978,90 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
? Colors.black
|
? Colors.black
|
||||||
: Colors.grey),
|
: Colors.grey),
|
||||||
items: _countries
|
items: _countries
|
||||||
.map((item) => DropdownMenuItem<String>(
|
.map((item) => DropdownMenuItem<ISOCountry>(
|
||||||
value: item,
|
value: item,
|
||||||
child: Text(item,
|
child: SizedBox(
|
||||||
style: TextStyle(
|
width: double.infinity,
|
||||||
fontFamily: context.translate(
|
child: Text(
|
||||||
'Roboto',
|
// item.nameEN,
|
||||||
'NotoKufi',
|
context.translate(
|
||||||
),
|
item.nameEN, item.nameAR),
|
||||||
color: isDarkTheme ? Colors.white : null,
|
overflow: TextOverflow.ellipsis,
|
||||||
),),
|
maxLines: 1,
|
||||||
))
|
style: TextStyle(
|
||||||
|
fontFamily: context.translate(
|
||||||
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
// color: Colors.red
|
||||||
|
color:
|
||||||
|
isDarkTheme ? Colors.white : null,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
))
|
||||||
.toList(),
|
.toList(),
|
||||||
onChanged: (String? newValue) {
|
onChanged: (ISOCountry? newValue) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_selectedCountry = newValue;
|
_selectedCountry = newValue;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
validator: _validateDropdown,
|
validator: (value) {
|
||||||
|
if (value == null)
|
||||||
|
return context.translate(
|
||||||
|
'Please select a country', 'يرجى اختيار دولة');
|
||||||
|
return null;
|
||||||
|
},
|
||||||
),
|
),
|
||||||
|
|
||||||
|
//Available Default Four Countries
|
||||||
|
// child: DropdownButtonFormField<String>(
|
||||||
|
// value: _selectedCountry,
|
||||||
|
// decoration: InputDecoration(
|
||||||
|
// enabledBorder: OutlineInputBorder(
|
||||||
|
// borderRadius: BorderRadius.circular(10),
|
||||||
|
// borderSide: BorderSide(
|
||||||
|
// color: Color(0xFFB68A34),
|
||||||
|
// // : MyTheme.topicColor(
|
||||||
|
// // IndicatorTopic.economy).shade400,
|
||||||
|
// width: 1), // Enabled border
|
||||||
|
// ),
|
||||||
|
// border: OutlineInputBorder(
|
||||||
|
// borderSide: BorderSide(
|
||||||
|
// color: Color(0xFFB68A34),
|
||||||
|
// // color: isDarkTheme
|
||||||
|
// // ? Colors.white
|
||||||
|
// // : Color(0xFF7296BE),
|
||||||
|
// ),
|
||||||
|
// borderRadius: BorderRadius.circular(8),
|
||||||
|
// ),
|
||||||
|
// labelText: context.translate('Select', ' اختيار')),
|
||||||
|
// icon: Icon(Icons.keyboard_arrow_down_sharp,
|
||||||
|
// color: _isHoveringDropdown
|
||||||
|
// ? Colors.black
|
||||||
|
// : Colors.grey),
|
||||||
|
// items: _countries
|
||||||
|
// .map((item) => DropdownMenuItem<String>(
|
||||||
|
// value: item,
|
||||||
|
// child: Text(
|
||||||
|
// item,
|
||||||
|
// style: TextStyle(
|
||||||
|
// fontFamily: context.translate(
|
||||||
|
// 'Roboto',
|
||||||
|
// 'NotoKufi',
|
||||||
|
// ),
|
||||||
|
// color: isDarkTheme ? Colors.white : null,
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ))
|
||||||
|
// .toList(),
|
||||||
|
// onChanged: (String? newValue) {
|
||||||
|
// setState(() {
|
||||||
|
// _selectedCountry = newValue;
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// validator: _validateDropdown,
|
||||||
|
// ),
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
Row(
|
Row(
|
||||||
@ -940,12 +1070,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
Text(
|
Text(
|
||||||
AppLocalizations.of(context)!.preferredLang,
|
AppLocalizations.of(context)!.preferredLang,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontSize: 16, fontWeight: FontWeight.w500,
|
fontSize: 16,
|
||||||
color: isDarkTheme ? Colors.white : null,
|
fontWeight: FontWeight.w500,
|
||||||
|
color: isDarkTheme ? Colors.white : null,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -962,14 +1093,18 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: isDarkTheme ? Colors.white :
|
color: Color(0xFFB68A34),
|
||||||
MyTheme.topicColor(IndicatorTopic.economy)
|
// : MyTheme.topicColor(
|
||||||
.shade400,
|
// IndicatorTopic.economy)
|
||||||
|
// .shade400,
|
||||||
width: 1), // Enabled border
|
width: 1), // Enabled border
|
||||||
),
|
),
|
||||||
border: OutlineInputBorder(
|
border: OutlineInputBorder(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
color: Color(0xFFB68A34),
|
||||||
|
// color: isDarkTheme
|
||||||
|
// ? Colors.white
|
||||||
|
// : Color(0xFF7296BE),
|
||||||
),
|
),
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
),
|
),
|
||||||
@ -980,16 +1115,18 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
: Colors.grey),
|
: Colors.grey),
|
||||||
items: preferred_language
|
items: preferred_language
|
||||||
.map((item) => DropdownMenuItem<String>(
|
.map((item) => DropdownMenuItem<String>(
|
||||||
value: item,
|
value: item,
|
||||||
child: Text(item,
|
child: Text(
|
||||||
style: TextStyle(
|
item,
|
||||||
fontFamily: context.translate(
|
style: TextStyle(
|
||||||
'Roboto',
|
fontFamily: context.translate(
|
||||||
'NotoKufi',
|
'Roboto',
|
||||||
),
|
'NotoKufi',
|
||||||
color: isDarkTheme ? Colors.white : null,
|
),
|
||||||
),),
|
color: isDarkTheme ? Colors.white : null,
|
||||||
))
|
),
|
||||||
|
),
|
||||||
|
))
|
||||||
.toList(),
|
.toList(),
|
||||||
onChanged: (String? newValue) {
|
onChanged: (String? newValue) {
|
||||||
setState(() {
|
setState(() {
|
||||||
@ -1012,9 +1149,14 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
},
|
},
|
||||||
side: BorderSide(
|
side: BorderSide(
|
||||||
color: showError
|
color: showError
|
||||||
? isDarkTheme ? Color(0xFFFFA200) : Color(0xFFb22222)
|
? isDarkTheme
|
||||||
: isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
? Color(0xFFB68A34)
|
||||||
|
: Color(0xFFb22222)
|
||||||
|
: Color(0xFFB68A34),
|
||||||
|
|
||||||
|
// : isDarkTheme
|
||||||
|
// ? Colors.white
|
||||||
|
// : Color(0xFF7296BE),
|
||||||
width: 1,
|
width: 1,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -1034,7 +1176,10 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
),
|
),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
color: isDarkTheme ? Colors.white : Color(0xFF898C81), // Change to your desired color
|
color: isDarkTheme
|
||||||
|
? Colors.white
|
||||||
|
: Color(
|
||||||
|
0xFF898C81), // Change to your desired color
|
||||||
),
|
),
|
||||||
children: [
|
children: [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
@ -1051,11 +1196,16 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
),
|
),
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: isDarkTheme ? Color(0xFF9EB3E4) : Color(0xFF985400),
|
color: Color(0xFFB68A34),
|
||||||
|
|
||||||
|
// color: isDarkTheme
|
||||||
|
// ? Color(0xFF9EB3E4)
|
||||||
|
// : Color(0xFF985400),
|
||||||
// Makes the text bold
|
// Makes the text bold
|
||||||
// decoration:
|
// decoration:
|
||||||
// TextDecoration.underline,
|
// TextDecoration.underline,
|
||||||
decorationColor: Color(0xFF985400),
|
decorationColor: Color(0xFFB68A34),
|
||||||
|
// decorationColor: Color(0xFF985400),
|
||||||
decorationThickness: 1),
|
decorationThickness: 1),
|
||||||
),
|
),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
@ -1065,7 +1215,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
color: isDarkTheme ? Colors.white : Color(
|
color: isDarkTheme
|
||||||
|
? Colors.white
|
||||||
|
: Color(
|
||||||
0xFF898C81), // Change to your desired color
|
0xFF898C81), // Change to your desired color
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -1082,10 +1234,14 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
color: isDarkTheme ? Color(0xFF9EB3E4) : Color(0xFF985400),
|
color: Color(0xFFB68A34),
|
||||||
|
|
||||||
|
// color: isDarkTheme
|
||||||
|
// ? Color(0xFF9EB3E4)
|
||||||
|
// : Color(0xFF985400),
|
||||||
// decoration:
|
// decoration:
|
||||||
// TextDecoration.underline,
|
// TextDecoration.underline,
|
||||||
decorationColor: Color(0xFF648CBA),
|
decorationColor: Color(0xFFB68A34),
|
||||||
decorationThickness: 1),
|
decorationThickness: 1),
|
||||||
),
|
),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
@ -1098,7 +1254,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
),
|
),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
color: isDarkTheme ? Colors.white : Color(
|
color: isDarkTheme
|
||||||
|
? Colors.white
|
||||||
|
: Color(
|
||||||
0xFF898C81), // Change to your desired color
|
0xFF898C81), // Change to your desired color
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -1147,7 +1305,10 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
AppLocalizations.of(context)!.change_password,
|
AppLocalizations.of(context)!.change_password,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
// color: Color(0xFF648CBA),
|
// color: Color(0xFF648CBA),
|
||||||
color: isDarkTheme ? Color(0xFF9EB3E4) : Color(0xFF985400),
|
color: Color(0xFFB68A34),
|
||||||
|
// color: isDarkTheme
|
||||||
|
// ? Color(0xFF9EB3E4)
|
||||||
|
// : Color(0xFF985400),
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
fontWeight: FontWeight.w700,
|
fontWeight: FontWeight.w700,
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
@ -1173,12 +1334,15 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
} else {
|
} else {
|
||||||
setState(() {
|
setState(() {
|
||||||
showError =
|
showError =
|
||||||
!isChecked; // Show error if the checkbox is not checked
|
!isChecked; // Show error if the checkbox is not checked
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: isDarkTheme ? Color(0xFF7296BE) :Color(0xFF92722A),
|
backgroundColor: Color(0xFFB68A34),
|
||||||
|
|
||||||
|
// backgroundColor:
|
||||||
|
// isDarkTheme ? Color(0xFF7296BE) : Color(0xFF92722A),
|
||||||
minimumSize: Size(double.infinity, 50),
|
minimumSize: Size(double.infinity, 50),
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
@ -1186,14 +1350,17 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment:
|
mainAxisAlignment:
|
||||||
MainAxisAlignment.center, // Center the content
|
MainAxisAlignment.center, // Center the content
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
AppLocalizations.of(context)!.save,
|
AppLocalizations.of(context)!.save,
|
||||||
style: TextStyle(color: Colors.white,fontFamily: context.translate(
|
style: TextStyle(
|
||||||
'Roboto',
|
color: Colors.white,
|
||||||
'NotoKufi',
|
fontFamily: context.translate(
|
||||||
),),
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
SizedBox(width: 8), // Add space between text and icon
|
SizedBox(width: 8), // Add space between text and icon
|
||||||
Image.asset(
|
Image.asset(
|
||||||
@ -1258,35 +1425,36 @@ class ConfirmationDialog extends ConsumerWidget {
|
|||||||
children: [
|
children: [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: AppLocalizations.of(context)!.name,
|
text: AppLocalizations.of(context)!.name,
|
||||||
style:
|
|
||||||
TextStyle(fontWeight: FontWeight.w700,fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),color: isDarkTheme ? Colors.white : null), // Bold for "name"
|
|
||||||
),
|
|
||||||
TextSpan(
|
|
||||||
text: context.translate(' or ', 'أو'),
|
|
||||||
style: TextStyle(
|
|
||||||
color: isDarkTheme ? Colors.white : null,
|
|
||||||
)
|
|
||||||
),
|
|
||||||
TextSpan(
|
|
||||||
text: AppLocalizations.of(context)!.dob,
|
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.w700,
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontWeight: FontWeight.w700,
|
color:
|
||||||
color: isDarkTheme ? Colors.white : null,
|
isDarkTheme ? Colors.white : null), // Bold for "name"
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: context.translate(' or ', 'أو'),
|
||||||
|
style: TextStyle(
|
||||||
|
color: isDarkTheme ? Colors.white : null,
|
||||||
|
)),
|
||||||
|
TextSpan(
|
||||||
|
text: AppLocalizations.of(context)!.dob,
|
||||||
|
style: TextStyle(
|
||||||
|
fontFamily: context.translate(
|
||||||
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
fontWeight: FontWeight.w700,
|
||||||
|
color: isDarkTheme ? Colors.white : null,
|
||||||
), // Bold for "date of birth"
|
), // Bold for "date of birth"
|
||||||
),
|
),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: ".",
|
text: ".",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: isDarkTheme ? Colors.white : null,
|
color: isDarkTheme ? Colors.white : null,
|
||||||
)
|
)),
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
@ -1309,23 +1477,36 @@ class ConfirmationDialog extends ConsumerWidget {
|
|||||||
Navigator.of(context).pop(false);
|
Navigator.of(context).pop(false);
|
||||||
},
|
},
|
||||||
style: OutlinedButton.styleFrom(
|
style: OutlinedButton.styleFrom(
|
||||||
side: BorderSide(color: isDarkTheme ? Color(0xFF7296BE) : Color(0xFF92722A)),
|
side: BorderSide(color: Color(0xFFB68A34)
|
||||||
|
// color:
|
||||||
|
// isDarkTheme ? Color(0xFF7296BE) : Color(0xFF92722A)
|
||||||
|
//
|
||||||
|
|
||||||
|
),
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(7)),
|
borderRadius: BorderRadius.all(Radius.circular(7)),
|
||||||
), // Set the border color here
|
), // Set the border color here
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Text(
|
||||||
"Cancel",
|
"Cancel",
|
||||||
style: TextStyle(color: isDarkTheme ? Color(0xFF7296BE) : Color(0xFF92722A),fontFamily: context.translate(
|
style: TextStyle(
|
||||||
'Roboto',
|
color: Color(0xFFB68A34),
|
||||||
'NotoKufi',
|
// color: isDarkTheme ? Color(0xFF7296BE) : Color(0xFF92722A),
|
||||||
),),
|
fontFamily: context.translate(
|
||||||
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
onPressed: () => Navigator.of(context).pop(true),
|
onPressed: () => Navigator.of(context).pop(true),
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: isDarkTheme ? Color(0xFF7296BE) : Color(0xFF92722A), // Brown color
|
backgroundColor: Color(0xFFB68A34),
|
||||||
|
|
||||||
|
// backgroundColor: isDarkTheme
|
||||||
|
// ? Color(0xFF7296BE)
|
||||||
|
// : Color(0xFF92722A), // Brown color
|
||||||
foregroundColor: Colors.white,
|
foregroundColor: Colors.white,
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
@ -1351,4 +1532,4 @@ class ConfirmationDialog extends ConsumerWidget {
|
|||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -40,12 +40,12 @@ extension Dialogs on BuildContext {
|
|||||||
/// If [errorDialogBuilder] is provided, an
|
/// If [errorDialogBuilder] is provided, an
|
||||||
/// [showLogBtn] is also true exception is thrown;
|
/// [showLogBtn] is also true exception is thrown;
|
||||||
Future<T> loaderWithErrorDialog<T>(
|
Future<T> loaderWithErrorDialog<T>(
|
||||||
FutureOr<T> Function() computation, {
|
FutureOr<T> Function() computation, {
|
||||||
Future<void> Function(
|
Future<void> Function(
|
||||||
Object error, [
|
Object error, [
|
||||||
StackTrace stackTrace,
|
StackTrace stackTrace,
|
||||||
])? errorDialogBuilder,
|
])? errorDialogBuilder,
|
||||||
}) async {
|
}) async {
|
||||||
final loaderContext = await _pushLoaderDialog();
|
final loaderContext = await _pushLoaderDialog();
|
||||||
late final T value;
|
late final T value;
|
||||||
try {
|
try {
|
||||||
@ -100,20 +100,17 @@ extension Dialogs on BuildContext {
|
|||||||
final contentText = Text(content);
|
final contentText = Text(content);
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
title: Text(title,
|
title: Text(title,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Color(0xFF898C81),
|
color: Color(0xFF898C81), fontWeight: FontWeight.w700)),
|
||||||
fontWeight: FontWeight.w700)
|
|
||||||
),
|
|
||||||
content: content.length > 300
|
content: content.length > 300
|
||||||
? SingleChildScrollView(
|
? SingleChildScrollView(
|
||||||
child:Text(
|
child: Text(content,
|
||||||
content,
|
style: TextStyle(color: Color(0xFF898C81))),
|
||||||
style: TextStyle(color: Color(0xFF898C81))
|
)
|
||||||
),
|
|
||||||
)
|
|
||||||
: Text(
|
: Text(
|
||||||
content,
|
content,
|
||||||
style: TextStyle(color:Color(0xFF898C81)), // Set content text color
|
style: TextStyle(
|
||||||
|
color: Color(0xFF898C81)), // Set content text color
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
@ -122,11 +119,12 @@ extension Dialogs on BuildContext {
|
|||||||
rootNavigator: true,
|
rootNavigator: true,
|
||||||
).pop,
|
).pop,
|
||||||
style: TextButton.styleFrom(
|
style: TextButton.styleFrom(
|
||||||
backgroundColor: Color(0xFFAA8E83), // Background color
|
// backgroundColor: Color(0xFFAA8E83), // Background color
|
||||||
|
backgroundColor: Color(0xFFB68A34), // Background color
|
||||||
foregroundColor: Colors.white, // Font (text) color
|
foregroundColor: Colors.white, // Font (text) color
|
||||||
side: BorderSide(
|
side: BorderSide(
|
||||||
// color: Color(0xFF92722A)), // Border outline color
|
// color: Color(0xFF92722A)), // Border outline color
|
||||||
color: Color(0xFFAA8E83)), // Border outline color
|
color: Color(0xFFB68A34)), // Border outline color
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(8), // Optional: Rounded corners
|
BorderRadius.circular(8), // Optional: Rounded corners
|
||||||
@ -154,11 +152,11 @@ extension Dialogs on BuildContext {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Future<bool?> confirmationDialog(
|
Future<bool?> confirmationDialog(
|
||||||
String titleText,
|
String titleText,
|
||||||
String contentText, {
|
String contentText, {
|
||||||
String cancelText = 'Cancel',
|
String cancelText = 'Cancel',
|
||||||
String confirmText = 'Confirm',
|
String confirmText = 'Confirm',
|
||||||
}) =>
|
}) =>
|
||||||
showDialog<bool>(
|
showDialog<bool>(
|
||||||
context: this,
|
context: this,
|
||||||
barrierDismissible: false,
|
barrierDismissible: false,
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
|||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
|
import 'package:jwt_decoder/jwt_decoder.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:the_validator/the_validator.dart';
|
import 'package:the_validator/the_validator.dart';
|
||||||
import 'package:uae_stat/config/app_links_helper.dart';
|
import 'package:uae_stat/config/app_links_helper.dart';
|
||||||
@ -18,8 +19,10 @@ import 'package:uae_stat/config/my_theme.dart';
|
|||||||
import 'package:uae_stat/config/theme/app_theme.dart';
|
import 'package:uae_stat/config/theme/app_theme.dart';
|
||||||
import 'package:uae_stat/config/theme/service.dart';
|
import 'package:uae_stat/config/theme/service.dart';
|
||||||
import 'package:uae_stat/config/theme/theme_provider.dart';
|
import 'package:uae_stat/config/theme/theme_provider.dart';
|
||||||
|
import 'package:uae_stat/domain/entities/session_entity.dart';
|
||||||
import 'package:uae_stat/domain/use_cases/auth_use_case.dart';
|
import 'package:uae_stat/domain/use_cases/auth_use_case.dart';
|
||||||
import 'package:uae_stat/domain/use_cases/language.dart';
|
import 'package:uae_stat/domain/use_cases/language.dart';
|
||||||
|
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
|
||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/banner_asset_path.dart';
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/banner_asset_path.dart';
|
||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/demo_home.dart';
|
import 'package:uae_stat/presentation/Screens/demo_home.dart';
|
||||||
@ -30,6 +33,7 @@ import 'package:uae_stat/presentation/components/space.dart';
|
|||||||
import 'package:uae_stat/presentation/components/themed_text_field.dart';
|
import 'package:uae_stat/presentation/components/themed_text_field.dart';
|
||||||
import 'package:uae_stat/presentation/routes/bottom_bar_routes/tab_routes/home_route.dart';
|
import 'package:uae_stat/presentation/routes/bottom_bar_routes/tab_routes/home_route.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import '../../Screens/auth_verification/registration.dart';
|
import '../../Screens/auth_verification/registration.dart';
|
||||||
import 'package:pocketbase/pocketbase.dart';
|
import 'package:pocketbase/pocketbase.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
@ -325,6 +329,175 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
print('themeMode $themeMode');
|
print('themeMode $themeMode');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> googleLogin(BuildContext context, WidgetRef ref,platform) async {
|
||||||
|
print(platform);
|
||||||
|
try {
|
||||||
|
final authData =
|
||||||
|
await pb.collection('users').authWithOAuth2(platform, (url) async {
|
||||||
|
await launchUrl(url);
|
||||||
|
});
|
||||||
|
print(authData);
|
||||||
|
// ✅ Check if authData is valid
|
||||||
|
if (authData.token.isNotEmpty && authData.record != null) {
|
||||||
|
print("✅ Login Successful");
|
||||||
|
print(authData.record);
|
||||||
|
|
||||||
|
final userDetails = authData.record;
|
||||||
|
final userId = userDetails?.id;
|
||||||
|
final email = userDetails?.data['email'] ?? '';
|
||||||
|
final isProfileComplete =
|
||||||
|
userDetails?.data['is_profile_completed'] ?? '';
|
||||||
|
final loginCount = userDetails?.data['login_count'] ?? '';
|
||||||
|
|
||||||
|
print("User ID: ${userId}");
|
||||||
|
print("Email: ${email}");
|
||||||
|
print("Email: ${isProfileComplete}");
|
||||||
|
print("Email: ${loginCount}");
|
||||||
|
|
||||||
|
await saveUserId(userId!, loginCount);
|
||||||
|
// await getDeviceToken(context, id);
|
||||||
|
await initializeTheme(context, ref, userId);
|
||||||
|
|
||||||
|
final session = await context.loaderWithErrorDialog(
|
||||||
|
() => ref
|
||||||
|
.read(
|
||||||
|
authUseCaseProvider.notifier,
|
||||||
|
)
|
||||||
|
.googleAndAppleAuthencation(authData),
|
||||||
|
errorDialogBuilder: (
|
||||||
|
error, [
|
||||||
|
StackTrace? stackTrace,
|
||||||
|
]) {
|
||||||
|
if (error == LoginError.invalidEmailPw) {
|
||||||
|
return context.simpleDialog(
|
||||||
|
title: context.translate(
|
||||||
|
'Incorrect Credentials',
|
||||||
|
'أوراق غير صحيحة',
|
||||||
|
),
|
||||||
|
content: context.translate(
|
||||||
|
'Your email or password is invalid. Please try again.',
|
||||||
|
'بريدك الإلكتروني أو كلمة المرور غير صالحة. حاول مرة اخرى.',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return context.simpleDialog();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
print("sessionTST - $session");
|
||||||
|
|
||||||
|
// final se = _sessionEntityFromPocketbaseRecord(authData);
|
||||||
|
// await _LocalAuthRepo.storeLocally(se);
|
||||||
|
|
||||||
|
// Extract intendedPath from query parameters (if coming from redirect)
|
||||||
|
final String? intendedPath =
|
||||||
|
GoRouterState.of(context).uri.queryParameters['intendedPath'];
|
||||||
|
print("Extracted intendedPath after login: $intendedPath");
|
||||||
|
|
||||||
|
if (isProfileComplete) {
|
||||||
|
print('Redirecting to Home / Intended Path');
|
||||||
|
// **Set Default Locale in Provider**
|
||||||
|
if (preferredLanguage == 'ar') {
|
||||||
|
ref.read(localeProvider.notifier).setLocale(const Locale('ar'));
|
||||||
|
} else {
|
||||||
|
ref.read(localeProvider.notifier).setLocale(const Locale('en'));
|
||||||
|
}
|
||||||
|
|
||||||
|
context.go(intendedPath ?? '/myhomepage');
|
||||||
|
} else {
|
||||||
|
print('Redirecting to Profile Setup');
|
||||||
|
|
||||||
|
context.go('/profile/$userId');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print("❌ Login failed: Invalid authData");
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
print("❌ Error during Google login: $e");
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
|
SnackBar(content: Text("Login failed. Please try again.")),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SessionEntity _sessionEntityFromPocketbaseRecord(RecordAuth ra) {
|
||||||
|
// final decodedToken = JwtDecoder.decode(ra.token);
|
||||||
|
// final expInSeconds = decodedToken['exp'];
|
||||||
|
// final expInMilliseconds = expInSeconds * 1000;
|
||||||
|
// final expiresOn = DateTime.fromMillisecondsSinceEpoch(expInMilliseconds);
|
||||||
|
// final se = SessionEntity(
|
||||||
|
// id: ra.record!.id,
|
||||||
|
// expiresOn: expiresOn,
|
||||||
|
// token: ra.token,
|
||||||
|
// modelJson: ra.record!.toJson(),
|
||||||
|
// );
|
||||||
|
// return se;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Future<void> googleLogin(BuildContext context,WidgetRef ref) async {
|
||||||
|
// try {
|
||||||
|
// final authData = await pb.collection('users').authWithOAuth2('apple', (url) async {
|
||||||
|
// await launchUrl(url);
|
||||||
|
// });
|
||||||
|
// print(authData);
|
||||||
|
// // ✅ Check if authData is valid
|
||||||
|
// if (authData.token.isNotEmpty && authData.record != null) {
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// print("✅ Login Successful");
|
||||||
|
// print(authData.record);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// final userDetails = authData.record;
|
||||||
|
// final userId = userDetails?.id;
|
||||||
|
// final email = userDetails?.data['email'] ?? '';
|
||||||
|
// final isProfileComplete = userDetails?.data['is_profile_completed'] ?? '';
|
||||||
|
// final loginCount = userDetails?.data['login_count'] ?? '';
|
||||||
|
// // final verified = userDetails?.data['verified'] ?? '';
|
||||||
|
//
|
||||||
|
// final se = _sessionEntityFromPocketbaseRecord(authData);
|
||||||
|
// await _LocalAuthRepo.storeLocally(se);
|
||||||
|
//
|
||||||
|
// print("User ID: ${userId}");
|
||||||
|
// print("Email: ${email}");
|
||||||
|
// print("Email: ${isProfileComplete}");
|
||||||
|
// print("Email: ${loginCount}");
|
||||||
|
//
|
||||||
|
// await saveUserId(userId!, loginCount);
|
||||||
|
// // await getDeviceToken(context, id);
|
||||||
|
// await initializeTheme(context,ref,userId);
|
||||||
|
//
|
||||||
|
// // Extract intendedPath from query parameters (if coming from redirect)
|
||||||
|
// final String? intendedPath =
|
||||||
|
// GoRouterState.of(context).uri.queryParameters['intendedPath'];
|
||||||
|
// print("Extracted intendedPath after login: $intendedPath");
|
||||||
|
//
|
||||||
|
// if (isProfileComplete) {
|
||||||
|
// print('Redirecting to Home / Intended Path');
|
||||||
|
// // **Set Default Locale in Provider**
|
||||||
|
// if (preferredLanguage == 'ar') {
|
||||||
|
// ref.read(localeProvider.notifier).setLocale(const Locale('ar'));
|
||||||
|
// } else {
|
||||||
|
// ref.read(localeProvider.notifier).setLocale(const Locale('en'));
|
||||||
|
// }
|
||||||
|
// context.go(intendedPath ?? '/myhomepage');
|
||||||
|
// } else {
|
||||||
|
// print('Redirecting to Profile Setup');
|
||||||
|
//
|
||||||
|
// context.go('/profile/$userId');
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// print("❌ Login failed: Invalid authData");
|
||||||
|
// }
|
||||||
|
// } catch (e) {
|
||||||
|
// print("❌ Error during Google login: $e");
|
||||||
|
// ScaffoldMessenger.of(context).showSnackBar(
|
||||||
|
// SnackBar(content: Text("Login failed. Please try again.")),
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
@ -662,9 +835,9 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
print("Is Profile Complete: $isProfileComplete");
|
print("Is Profile Complete: $isProfileComplete");
|
||||||
|
|
||||||
// Extract intendedPath from query parameters (if coming from redirect)
|
// Extract intendedPath from query parameters (if coming from redirect)
|
||||||
final String? intendedPath =
|
// final String? intendedPath =
|
||||||
GoRouterState.of(context).uri.queryParameters['intendedPath'];
|
// GoRouterState.of(context).uri.queryParameters['intendedPath'];
|
||||||
print("Extracted intendedPath after login: $intendedPath");
|
// print("Extracted intendedPath after login: $intendedPath");
|
||||||
|
|
||||||
if (!context.mounted) return;
|
if (!context.mounted) return;
|
||||||
|
|
||||||
@ -676,7 +849,7 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
} else {
|
} else {
|
||||||
ref.read(localeProvider.notifier).setLocale(const Locale('en'));
|
ref.read(localeProvider.notifier).setLocale(const Locale('en'));
|
||||||
}
|
}
|
||||||
context.go(intendedPath ?? '/myhomepage');
|
context.go('/myhomepage');
|
||||||
} else {
|
} else {
|
||||||
print('Redirecting to Profile Setup');
|
print('Redirecting to Profile Setup');
|
||||||
if (userId.isNotEmpty) {
|
if (userId.isNotEmpty) {
|
||||||
@ -972,7 +1145,9 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
final signInWithGoogleBtn = SizedBox(
|
final signInWithGoogleBtn = SizedBox(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
child: OutlinedButton(
|
child: OutlinedButton(
|
||||||
onPressed: () async {},
|
onPressed: () async {
|
||||||
|
googleLogin(context,ref,'google');
|
||||||
|
},
|
||||||
style: OutlinedButton.styleFrom(
|
style: OutlinedButton.styleFrom(
|
||||||
side: const BorderSide(color: Color(0xFF000000)),
|
side: const BorderSide(color: Color(0xFF000000)),
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
@ -1010,7 +1185,9 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
final signInWithAppleBtn = SizedBox(
|
final signInWithAppleBtn = SizedBox(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
child: OutlinedButton(
|
child: OutlinedButton(
|
||||||
onPressed: () async {},
|
onPressed: () async {
|
||||||
|
googleLogin(context,ref,'apple');
|
||||||
|
},
|
||||||
style: OutlinedButton.styleFrom(
|
style: OutlinedButton.styleFrom(
|
||||||
side: const BorderSide(color: Color(0xFF000000)),
|
side: const BorderSide(color: Color(0xFF000000)),
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
@ -1219,3 +1396,30 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
// );
|
// );
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// abstract class _LocalAuthRepo {
|
||||||
|
// static const _key = 'session';
|
||||||
|
// static const _storage = FlutterSecureStorage();
|
||||||
|
//
|
||||||
|
// static Future<SessionEntity?> fetchLocallyStored() async {
|
||||||
|
// final e = await _storage.read(key: _key);
|
||||||
|
// if (e == null) return null;
|
||||||
|
// final se = SessionEntity.fromJson(e);
|
||||||
|
// if (se.freshness == SessionFreshness.expired) {
|
||||||
|
// await clear();
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// return se;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// static Future<void> storeLocally(
|
||||||
|
// SessionEntity se,
|
||||||
|
// ) =>
|
||||||
|
// _storage.write(
|
||||||
|
// key: _key,
|
||||||
|
// value: se.toJson(),
|
||||||
|
// );
|
||||||
|
//
|
||||||
|
// static Future<void> clear() => _storage.delete(key: _key);
|
||||||
|
// }
|
||||||
@ -1092,8 +1092,8 @@ class EconomyStatsState extends ConsumerState<EconomyStatsWidget> {
|
|||||||
currentTheme = ref.read(themeProvider);
|
currentTheme = ref.read(themeProvider);
|
||||||
print('123456789');
|
print('123456789');
|
||||||
print(currentTheme);
|
print(currentTheme);
|
||||||
final isDark = currentTheme == ThemeMode.dark ||
|
final isDark = ref.read(themeProvider) == ThemeMode.dark ||
|
||||||
(currentTheme == ThemeMode.system &&
|
(ref.read(themeProvider) == ThemeMode.system &&
|
||||||
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
||||||
|
|
||||||
final themeMode = (isDark ? 'dark' : 'light');
|
final themeMode = (isDark ? 'dark' : 'light');
|
||||||
@ -1634,7 +1634,7 @@ class InfoCard extends StatelessWidget {
|
|||||||
Text(
|
Text(
|
||||||
title,
|
title,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 13,
|
fontSize: 12,
|
||||||
fontWeight: FontWeight.w700,
|
fontWeight: FontWeight.w700,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
// color: Colors.black,
|
// color: Colors.black,
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import 'package:flutter_svg/svg.dart';
|
|||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
// import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
import 'package:pocketbase/pocketbase.dart';
|
import 'package:pocketbase/pocketbase.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
@ -270,9 +271,9 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
|||||||
AppLocalizations.of(context)!.removed_from_Bookmark,
|
AppLocalizations.of(context)!.removed_from_Bookmark,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
duration: Duration(seconds: 2),
|
duration: Duration(seconds: 2),
|
||||||
),
|
),
|
||||||
@ -389,7 +390,7 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
|||||||
foregroundColor: Colors.white,
|
foregroundColor: Colors.white,
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(10.0), // Set text color
|
BorderRadius.circular(10.0), // Set text color
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Text(
|
||||||
@ -463,7 +464,8 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
|||||||
final List<Map<String, dynamic>> tabs = [
|
final List<Map<String, dynamic>> tabs = [
|
||||||
{
|
{
|
||||||
'title': AppLocalizations.of(context)!.all_bookmarks,
|
'title': AppLocalizations.of(context)!.all_bookmarks,
|
||||||
'color': isDarkTheme ? Colors.white : Colors.black,
|
'color': isDarkTheme ? Colors.white : Color(0xFFB68A34),
|
||||||
|
// 'color': isDarkTheme ? Colors.white : Colors.black,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'title': AppLocalizations.of(context)!.economy_title,
|
'title': AppLocalizations.of(context)!.economy_title,
|
||||||
@ -480,11 +482,11 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
|||||||
];
|
];
|
||||||
|
|
||||||
List<Map<String, dynamic>> bookmarks =
|
List<Map<String, dynamic>> bookmarks =
|
||||||
dataList.where((item) => item['isBookmark'] == true).toList();
|
dataList.where((item) => item['isBookmark'] == true).toList();
|
||||||
List<Map<String, dynamic>> filteredBookmarks = dataList.where((bookmark) {
|
List<Map<String, dynamic>> filteredBookmarks = dataList.where((bookmark) {
|
||||||
String mainTopic = bookmark['main_topic'].toString().trim().toLowerCase();
|
String mainTopic = bookmark['main_topic'].toString().trim().toLowerCase();
|
||||||
String selectedTabTitle =
|
String selectedTabTitle =
|
||||||
tabs[selectedTabIndex]['title'].toString().trim().toLowerCase();
|
tabs[selectedTabIndex]['title'].toString().trim().toLowerCase();
|
||||||
|
|
||||||
// Debugging prints
|
// Debugging prints
|
||||||
print(
|
print(
|
||||||
@ -515,206 +517,212 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
|||||||
),
|
),
|
||||||
body: isLoading
|
body: isLoading
|
||||||
? Container(
|
? Container(
|
||||||
color: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
color: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
||||||
// color: Color(0x98FFFCE5), // Semi-transparent background
|
// 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
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: Column(
|
||||||
|
children: [
|
||||||
|
TabBarHeader(
|
||||||
|
tabs: tabs,
|
||||||
|
selectedIndex: selectedTabIndex,
|
||||||
|
onTabSelected: (index) {
|
||||||
|
setState(() {
|
||||||
|
selectedTabIndex = index;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
isDarkTheme: isDarkTheme),
|
||||||
|
Expanded(
|
||||||
|
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,
|
||||||
|
),
|
||||||
|
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,
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: Center(
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Icon(Icons.info_outline,
|
||||||
margin: EdgeInsets.symmetric(
|
size: 100, color: Colors.grey[400]),
|
||||||
horizontal: 40), // Left & Right space
|
SizedBox(height: 16),
|
||||||
child: LinearProgressIndicator(
|
Text(
|
||||||
minHeight: 5, // Adjust thickness
|
context.translate('No BookMark Added',
|
||||||
backgroundColor:
|
'لم يتم إضافة أي علامة مرجعية'),
|
||||||
Colors.grey[100], // Optional: Background color
|
style: TextStyle(
|
||||||
valueColor: AlwaysStoppedAnimation<Color>(
|
fontFamily: context.translate(
|
||||||
Color(0xFFAA8E83)), // Loader color
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
|
fontSize: 16,
|
||||||
|
color: Colors.grey),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
))
|
||||||
|
: filteredBookmarks.isEmpty
|
||||||
|
? Center(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Icon(Icons.info_outline,
|
||||||
|
size: 100, color: Colors.grey[400]),
|
||||||
|
SizedBox(height: 16),
|
||||||
|
Text(
|
||||||
|
context.translate('No BookMark Added',
|
||||||
|
'لم يتم إضافة أي علامة مرجعية'),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
|
color: Colors.grey,
|
||||||
|
fontFamily: context.translate(
|
||||||
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: Column(
|
: Padding(
|
||||||
children: [
|
padding: const EdgeInsets.all(8.0),
|
||||||
TabBarHeader(
|
child: Column(
|
||||||
tabs: tabs,
|
children: [
|
||||||
selectedIndex: selectedTabIndex,
|
Container(
|
||||||
onTabSelected: (index) {
|
decoration: BoxDecoration(
|
||||||
setState(() {
|
color: tabs[selectedTabIndex]
|
||||||
selectedTabIndex = index;
|
['color'],
|
||||||
});
|
borderRadius: BorderRadius.only(
|
||||||
},
|
topLeft: Radius.circular(20),
|
||||||
isDarkTheme: isDarkTheme),
|
topRight: Radius.circular(20))
|
||||||
Expanded(
|
|
||||||
child: selectedTabIndex == 0
|
// borderRadius: BorderRadius.all(
|
||||||
? (bookmarks.isNotEmpty
|
// Radius.circular(35))
|
||||||
? SingleChildScrollView(
|
|
||||||
child: Column(
|
),
|
||||||
children: List.generate(
|
padding: const EdgeInsets.only(
|
||||||
transformedList.length, (i) {
|
left: 16,
|
||||||
final mainTopic = transformedList[i];
|
bottom: 5,
|
||||||
print('oustside1 $mainTopic');
|
top: 5,
|
||||||
final list =
|
right: 10),
|
||||||
List.from(mainTopic['SubTopic'] ?? []);
|
child: Row(
|
||||||
print('oustside2 $list');
|
mainAxisAlignment:
|
||||||
return CustomExpandableTile(
|
MainAxisAlignment.spaceBetween,
|
||||||
index: i,
|
children: [
|
||||||
isExpanded: expandedIndex == i,
|
Text(
|
||||||
onTap: (int index) {
|
tabs[selectedTabIndex]['title'],
|
||||||
// 🔹 Expecting an index
|
style: TextStyle(
|
||||||
setState(() {
|
fontFamily: context.translate(
|
||||||
expandedIndex =
|
'Roboto',
|
||||||
(expandedIndex == index)
|
'NotoKufi',
|
||||||
? 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);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
filteredBookmarks: List.from(
|
|
||||||
mainTopic['SubTopic'] ?? []),
|
|
||||||
titleBackgroundColor:
|
|
||||||
mainTopic['valueColor'],
|
|
||||||
// Ensure it's a new list
|
|
||||||
isDarkTheme: isDarkTheme,
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: Center(
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Icon(Icons.info_outline,
|
|
||||||
size: 100, color: Colors.grey[400]),
|
|
||||||
SizedBox(height: 16),
|
|
||||||
Text(
|
|
||||||
context.translate('No BookMark Added',
|
|
||||||
'لم يتم إضافة أي علامة مرجعية'),
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
fontSize: 16,
|
|
||||||
color: Colors.grey),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
))
|
|
||||||
: filteredBookmarks.isEmpty
|
|
||||||
? Center(
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Icon(Icons.info_outline,
|
|
||||||
size: 100, color: Colors.grey[400]),
|
|
||||||
SizedBox(height: 16),
|
|
||||||
Text(
|
|
||||||
context.translate('No BookMark Added',
|
|
||||||
'لم يتم إضافة أي علامة مرجعية'),
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16,
|
|
||||||
color: Colors.grey,
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: Padding(
|
|
||||||
padding: const EdgeInsets.all(8.0),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: tabs[selectedTabIndex]
|
|
||||||
['color'],
|
|
||||||
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);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
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);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -836,11 +844,11 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildBoxes(
|
Widget _buildBoxes(
|
||||||
Map<String, dynamic> data,
|
Map<String, dynamic> data,
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
Color styleColor,
|
Color styleColor,
|
||||||
bool isDarkTheme,
|
bool isDarkTheme,
|
||||||
) {
|
) {
|
||||||
// Color borderColor = data['valueColor'];
|
// Color borderColor = data['valueColor'];
|
||||||
print('inside function $data');
|
print('inside function $data');
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
@ -953,9 +961,9 @@ class TabBarHeader extends StatelessWidget {
|
|||||||
|
|
||||||
TabBarHeader(
|
TabBarHeader(
|
||||||
{required this.tabs,
|
{required this.tabs,
|
||||||
required this.selectedIndex,
|
required this.selectedIndex,
|
||||||
required this.onTabSelected,
|
required this.onTabSelected,
|
||||||
required this.isDarkTheme});
|
required this.isDarkTheme});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -975,7 +983,7 @@ class TabBarHeader extends StatelessWidget {
|
|||||||
onPressed: () => onTabSelected(index),
|
onPressed: () => onTabSelected(index),
|
||||||
style: ButtonStyle(
|
style: ButtonStyle(
|
||||||
foregroundColor:
|
foregroundColor:
|
||||||
MaterialStateProperty.resolveWith((states) {
|
MaterialStateProperty.resolveWith((states) {
|
||||||
return selectedIndex == index
|
return selectedIndex == index
|
||||||
? entry.value['color']
|
? entry.value['color']
|
||||||
: Colors.grey[700];
|
: Colors.grey[700];
|
||||||
@ -1058,12 +1066,16 @@ class _CustomExpandableTileState extends State<CustomExpandableTile> {
|
|||||||
color: widget.isDarkTheme
|
color: widget.isDarkTheme
|
||||||
? Color(0xFF111111)
|
? Color(0xFF111111)
|
||||||
: Colors
|
: Colors
|
||||||
.white, // Ensuring the background outside the rounded container is white
|
.white, // Ensuring the background outside the rounded container is white
|
||||||
),
|
),
|
||||||
child: Container(
|
child: Container(
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: widget.titleBackgroundColor,
|
color: widget.titleBackgroundColor,
|
||||||
borderRadius: BorderRadius.all(Radius.circular(35))),
|
borderRadius: BorderRadius.only(
|
||||||
|
topLeft: Radius.circular(20),
|
||||||
|
topRight: Radius.circular(20))
|
||||||
|
// borderRadius: BorderRadius.all(Radius.circular(35))
|
||||||
|
),
|
||||||
padding: const EdgeInsets.only(
|
padding: const EdgeInsets.only(
|
||||||
left: 16, bottom: 5, top: 5, right: 10),
|
left: 16, bottom: 5, top: 5, right: 10),
|
||||||
child: Row(
|
child: Row(
|
||||||
@ -1102,9 +1114,9 @@ class _CustomExpandableTileState extends State<CustomExpandableTile> {
|
|||||||
// height: widget.isExpanded ? myheight * 0.4 : 0,
|
// height: widget.isExpanded ? myheight * 0.4 : 0,
|
||||||
child: widget.isExpanded
|
child: widget.isExpanded
|
||||||
? SingleChildScrollView(
|
? SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
widget.childWidget,
|
widget.childWidget,
|
||||||
// Container(
|
// Container(
|
||||||
// decoration: BoxDecoration(
|
// decoration: BoxDecoration(
|
||||||
// color: Colors.white,
|
// color: Colors.white,
|
||||||
@ -1127,9 +1139,9 @@ class _CustomExpandableTileState extends State<CustomExpandableTile> {
|
|||||||
// },
|
// },
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -1137,4 +1149,4 @@ class _CustomExpandableTileState extends State<CustomExpandableTile> {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1714,10 +1714,10 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
|
|||||||
context.go('/uaenumbers');
|
context.go('/uaenumbers');
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
context.go('/competitiveness');
|
// context.go('/competitiveness');
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
context.go('/countryprofile');
|
// context.go('/countryprofile');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import file_selector_macos
|
|||||||
import firebase_core
|
import firebase_core
|
||||||
import firebase_messaging
|
import firebase_messaging
|
||||||
import flutter_secure_storage_darwin
|
import flutter_secure_storage_darwin
|
||||||
|
import google_sign_in_ios
|
||||||
import package_info_plus
|
import package_info_plus
|
||||||
import path_provider_foundation
|
import path_provider_foundation
|
||||||
import share_plus
|
import share_plus
|
||||||
@ -30,6 +31,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
|||||||
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
||||||
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
|
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
|
||||||
FlutterSecureStorageDarwinPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageDarwinPlugin"))
|
FlutterSecureStorageDarwinPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageDarwinPlugin"))
|
||||||
|
FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin"))
|
||||||
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
||||||
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||||
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
|
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
|
||||||
|
|||||||
48
pubspec.lock
48
pubspec.lock
@ -804,6 +804,54 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.8.1"
|
version: "14.8.1"
|
||||||
|
google_identity_services_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_identity_services_web
|
||||||
|
sha256: "5d187c46dc59e02646e10fe82665fc3884a9b71bc1c90c2b8b749316d33ee454"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.3.3+1"
|
||||||
|
google_sign_in:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: google_sign_in
|
||||||
|
sha256: "939a8b58f84c4053811b8c1bc9adbcb59449a15b37958264bbf60020698cca0e"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "7.1.1"
|
||||||
|
google_sign_in_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_sign_in_android
|
||||||
|
sha256: f256b8f0e6c09d135c166fe20b25256e24d60fe1a72e6bdc112a200bd0d555b4
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "7.0.3"
|
||||||
|
google_sign_in_ios:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_sign_in_ios
|
||||||
|
sha256: c7ee744ebbcd98353966dbdee735d4fca085226f6bf725c6bea8a5c8fe0055bc
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.1.0"
|
||||||
|
google_sign_in_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_sign_in_platform_interface
|
||||||
|
sha256: "8736443134d2cccadd4f228d600177cb3947e36683466a6ab96877ce6932885a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.0"
|
||||||
|
google_sign_in_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_sign_in_web
|
||||||
|
sha256: "09ac306b2787b48f19c857b9f93375b654f774643c75bd6a1a078c85f4f7b468"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
graphs:
|
graphs:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@ -77,6 +77,7 @@ dependencies:
|
|||||||
app_settings: ^6.1.1
|
app_settings: ^6.1.1
|
||||||
appsflyer_sdk: ^6.16.2
|
appsflyer_sdk: ^6.16.2
|
||||||
dotted_border: ^2.1.0
|
dotted_border: ^2.1.0
|
||||||
|
google_sign_in: ^7.1.1
|
||||||
|
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
fading_edge_scrollview: ^4.1.1
|
fading_edge_scrollview: ^4.1.1
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user