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
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint …Žœÿƒ3 ¡¹ñÀ÷2z
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint <EFBFBD>àÕ€„3 ¡¹ñÀ÷2z
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
_/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
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint €<EFBFBD>œÿƒ3 ¸ïòÀ÷2|
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ±àÕ€„3 ¸ïòÀ÷2|
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
_/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
|
||||
s/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86/additional_project_files.txtC
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Œ<EFBFBD>œÿƒ3 „òòÀ÷2t
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ¿àÕ€„3 „òòÀ÷2t
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
_/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
|
||||
v/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/Debug/4y161to1/x86_64/additional_project_files.txtC
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint –<EFBFBD>œÿƒ3 •ôòÀ÷2w
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint ÊàÕ€„3 •ôòÀ÷2w
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
_/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
|
||||
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/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
|
||||
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
|
||||
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>
|
||||
/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|
|
||||
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
|
||||
_/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
|
||||
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
|
||||
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
|
||||
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~
|
||||
|
|
||||
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>
|
||||
/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
|
||||
_/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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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>
|
||||
/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
|
||||
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
|
||||
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
|
||||
_/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>
|
||||
/Users/venbateam/Documents/UAE_Stats/FCSC/frontend/android/app/.cxx/RelWithDebInfo/574gs2w4/x86_64/additional_project_files.txtC
|
||||
A
|
||||
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint Ê¥‘<EFBFBD>û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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
_/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
|
||||
- app_settings (5.1.1):
|
||||
- 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):
|
||||
- AppsFlyerFramework (= 6.16.2)
|
||||
- Flutter
|
||||
@ -53,9 +63,19 @@ PODS:
|
||||
- FlutterMacOS
|
||||
- fluttertoast (0.0.2):
|
||||
- Flutter
|
||||
- google_sign_in_ios (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- GoogleSignIn (~> 9.0)
|
||||
- GTMSessionFetcher (>= 3.4.0)
|
||||
- GoogleDataTransport (10.1.0):
|
||||
- nanopb (~> 3.30910.0)
|
||||
- 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/Environment
|
||||
- GoogleUtilities/Logger
|
||||
@ -80,6 +100,14 @@ PODS:
|
||||
- GoogleUtilities/UserDefaults (8.0.2):
|
||||
- GoogleUtilities/Logger
|
||||
- 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):
|
||||
- Flutter
|
||||
- nanopb (3.30910.0):
|
||||
@ -119,6 +147,7 @@ DEPENDENCIES:
|
||||
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
|
||||
- flutter_secure_storage_darwin (from `.symlinks/plugins/flutter_secure_storage_darwin/darwin`)
|
||||
- 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`)
|
||||
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
||||
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
||||
@ -130,6 +159,8 @@ DEPENDENCIES:
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- AppAuth
|
||||
- AppCheckCore
|
||||
- AppsFlyerFramework
|
||||
- Firebase
|
||||
- FirebaseCore
|
||||
@ -137,7 +168,10 @@ SPEC REPOS:
|
||||
- FirebaseInstallations
|
||||
- FirebaseMessaging
|
||||
- GoogleDataTransport
|
||||
- GoogleSignIn
|
||||
- GoogleUtilities
|
||||
- GTMAppAuth
|
||||
- GTMSessionFetcher
|
||||
- nanopb
|
||||
- PromisesObjC
|
||||
|
||||
@ -164,6 +198,8 @@ EXTERNAL SOURCES:
|
||||
:path: ".symlinks/plugins/flutter_secure_storage_darwin/darwin"
|
||||
fluttertoast:
|
||||
:path: ".symlinks/plugins/fluttertoast/ios"
|
||||
google_sign_in_ios:
|
||||
:path: ".symlinks/plugins/google_sign_in_ios/darwin"
|
||||
image_picker_ios:
|
||||
:path: ".symlinks/plugins/image_picker_ios/ios"
|
||||
package_info_plus:
|
||||
@ -184,6 +220,8 @@ EXTERNAL SOURCES:
|
||||
SPEC CHECKSUMS:
|
||||
app_links: 76b66b60cc809390ca1ad69bfd66b998d2387ac7
|
||||
app_settings: 5127ae0678de1dcc19f2293271c51d37c89428b2
|
||||
AppAuth: 1c1a8afa7e12f2ec3a294d9882dfa5ab7d3cb063
|
||||
AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f
|
||||
appsflyer_sdk: ebe94dc3f00b07bdd001251dbc87879bda3c494a
|
||||
AppsFlyerFramework: fe5303bffcdfd941d5f570c2d21eaaea982e7bdc
|
||||
connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd
|
||||
@ -199,8 +237,12 @@ SPEC CHECKSUMS:
|
||||
flutter_native_splash: 6cad9122ea0fad137d23137dd14b937f3e90b145
|
||||
flutter_secure_storage_darwin: ce237a8775b39723566dc72571190a3769d70468
|
||||
fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
|
||||
google_sign_in_ios: 205742c688aea0e64db9da03c33121694a365109
|
||||
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
|
||||
GoogleSignIn: c7f09cfbc85a1abf69187be091997c317cc33b77
|
||||
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
|
||||
GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238
|
||||
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
|
||||
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
|
||||
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
||||
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
|
||||
|
||||
@ -322,14 +322,10 @@
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
||||
@ -358,14 +354,10 @@
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
||||
|
||||
@ -4,5 +4,9 @@
|
||||
<dict>
|
||||
<key>aps-environment</key>
|
||||
<string>development</string>
|
||||
<key>com.apple.developer.applesignin</key>
|
||||
<array>
|
||||
<string>Default</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@ -1,14 +1,13 @@
|
||||
import 'dart:convert';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:pocketbase/pocketbase.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:uae_stat/config/api_config.dart';
|
||||
|
||||
class ThemeBaseService {
|
||||
final pb = PocketBase(apiUrl);
|
||||
dynamic themeData;
|
||||
|
||||
|
||||
|
||||
// Future getUserTheme(String userId) async {
|
||||
// final prefs = await SharedPreferences.getInstance();
|
||||
// final userId = prefs.getString('userId') ?? '';
|
||||
@ -40,14 +39,15 @@ class ThemeBaseService {
|
||||
// }
|
||||
|
||||
Future<dynamic> getUserTheme(String userId) async {
|
||||
print('getUserTheme');
|
||||
final url = "${pb.baseUrl}/api/collections/users/records/$userId";
|
||||
|
||||
final adminAuth = await pb.admins.authWithPassword(
|
||||
'pb@venbainfotech.com',
|
||||
'pb@venbainfotech.com',
|
||||
);
|
||||
final String adminToken = adminAuth.token;
|
||||
print('adminToken: $adminToken');
|
||||
final adminAuth = await pb.admins.authWithPassword(
|
||||
'pb@venbainfotech.com',
|
||||
'pb@venbainfotech.com',
|
||||
);
|
||||
final String adminToken = adminAuth.token;
|
||||
print('adminToken: $adminToken');
|
||||
final response = await http.get(
|
||||
Uri.parse(url),
|
||||
headers: {
|
||||
@ -57,13 +57,22 @@ class ThemeBaseService {
|
||||
);
|
||||
|
||||
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';
|
||||
} else {
|
||||
print('THEME : system');
|
||||
return 'system';
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateUserTheme(String userId, String theme) async {
|
||||
print('updateUserTheme');
|
||||
// Authenticate admin d
|
||||
final url = "${pb.baseUrl}/api/collections/users/records/$userId";
|
||||
final adminAuth = await pb.admins.authWithPassword(
|
||||
@ -85,7 +94,7 @@ class ThemeBaseService {
|
||||
);
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
print("Theme updated successfully");
|
||||
print("Theme updated successfully - ${response.body}");
|
||||
} else {
|
||||
print("Failed to update theme: ${response.body}");
|
||||
throw Exception('Failed to update theme');
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:uae_stat/config/theme/app_theme.dart';
|
||||
|
||||
class ThemeSelectorDialog extends StatefulWidget {
|
||||
@ -11,12 +12,28 @@ class ThemeSelectorDialog extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _ThemeSelectorDialogState extends State<ThemeSelectorDialog> {
|
||||
late AppTheme _selectedTheme;
|
||||
AppTheme? _selectedTheme;
|
||||
|
||||
@override
|
||||
void 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
|
||||
@ -26,12 +43,21 @@ class _ThemeSelectorDialogState extends State<ThemeSelectorDialog> {
|
||||
content: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: AppTheme.values.map((theme) {
|
||||
print("THEME_DIAL1- $theme");
|
||||
return RadioListTile<AppTheme>(
|
||||
title: Text(theme.name[0].toUpperCase() + theme.name.substring(1)),
|
||||
value: theme,
|
||||
groupValue: _selectedTheme,
|
||||
onChanged: (value) => setState(() => _selectedTheme = value!),
|
||||
);
|
||||
title:
|
||||
Text(theme.name[0].toUpperCase() + theme.name.substring(1)),
|
||||
value: theme,
|
||||
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(),
|
||||
),
|
||||
actions: [
|
||||
|
||||
@ -31,7 +31,7 @@ class SessionEntity {
|
||||
SessionFreshness get freshness {
|
||||
final now = DateTime.now();
|
||||
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.fresh;
|
||||
|
||||
@ -37,6 +37,11 @@ class TAuthRepo {
|
||||
() => _state!,
|
||||
);
|
||||
|
||||
Future googleAndAppleAuthencation(token) => Future.delayed(
|
||||
kThemeAnimationDuration,
|
||||
() => _sample,
|
||||
);
|
||||
|
||||
Future<void> logout() => Future.delayed(
|
||||
kThemeAnimationDuration,
|
||||
() => _state = null,
|
||||
|
||||
@ -69,6 +69,21 @@ class AuthUseCase extends _$AuthUseCase {
|
||||
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 {
|
||||
await _repo.logout();
|
||||
state = const AsyncData(null);
|
||||
|
||||
@ -53,6 +53,7 @@ class PAuthRepo implements TAuthRepo {
|
||||
email,
|
||||
pw,
|
||||
);
|
||||
print('googleAuth $user');
|
||||
} on ClientException catch (err) {
|
||||
final message = err.response['message'];
|
||||
final isWrongEmailPw = message == 'Failed to authenticate.';
|
||||
@ -66,6 +67,30 @@ class PAuthRepo implements TAuthRepo {
|
||||
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
|
||||
Future<void> logout() {
|
||||
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/space.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';
|
||||
|
||||
class CreateNewPw extends ConsumerStatefulWidget {
|
||||
@ -27,9 +27,9 @@ class CreateNewPw extends ConsumerStatefulWidget {
|
||||
|
||||
const CreateNewPw(
|
||||
{Key? key,
|
||||
required this.userId,
|
||||
required this.email,
|
||||
required this.keyParam});
|
||||
required this.userId,
|
||||
required this.email,
|
||||
required this.keyParam});
|
||||
|
||||
@override
|
||||
ConsumerState<CreateNewPw> createState() => _CreateNewPwState();
|
||||
@ -126,7 +126,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
try {
|
||||
// Attempt to authenticate the user with email and password
|
||||
final authResponse =
|
||||
await _pb.collection('users').authWithPassword(email, password);
|
||||
await _pb.collection('users').authWithPassword(email, password);
|
||||
|
||||
if (authResponse != null) {
|
||||
print('Password match successful for email: $email');
|
||||
@ -156,20 +156,20 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
};
|
||||
|
||||
bool isPasswordValid =
|
||||
await verifyUserPassword(widget.email, oldPassword);
|
||||
await verifyUserPassword(widget.email, oldPassword);
|
||||
|
||||
print(isPasswordValid);
|
||||
|
||||
if (isPasswordValid) {
|
||||
// Update password
|
||||
await _pb.collection('users').update(
|
||||
userId,
|
||||
body: {
|
||||
'password': newPassword,
|
||||
'passwordConfirm': newPassword,
|
||||
},
|
||||
headers: headers,
|
||||
);
|
||||
userId,
|
||||
body: {
|
||||
'password': newPassword,
|
||||
'passwordConfirm': newPassword,
|
||||
},
|
||||
headers: headers,
|
||||
);
|
||||
|
||||
setState(() {
|
||||
isLoading = false;
|
||||
@ -179,13 +179,13 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(
|
||||
AppLocalizations.of(context)!.password_update_successfully,
|
||||
AppLocalizations.of(context)!.password_update_successfully,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)
|
||||
),),
|
||||
)),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@ -203,14 +203,14 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
});
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content:
|
||||
Text(AppLocalizations.of(context)!.your_old_password_incorrect,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)
|
||||
),),
|
||||
content: Text(
|
||||
AppLocalizations.of(context)!.your_old_password_incorrect,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)),
|
||||
),
|
||||
backgroundColor: Colors.red,
|
||||
),
|
||||
);
|
||||
@ -222,13 +222,14 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
});
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(context.translate('Failed to update password: $e','فشل في تحديث كلمة المرور'),
|
||||
content: Text(
|
||||
context.translate(
|
||||
'Failed to update password: $e', 'فشل في تحديث كلمة المرور'),
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)
|
||||
),
|
||||
)),
|
||||
),
|
||||
backgroundColor: Colors.red,
|
||||
),
|
||||
@ -256,53 +257,51 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
});
|
||||
|
||||
// final themeMode = ref.read(themeProvider);
|
||||
final themeMode = ThemeMode.dark;
|
||||
final isDarkTheme = themeMode == ThemeMode.dark ||
|
||||
(themeMode == ThemeMode.system &&
|
||||
// final themeMode = ThemeMode.dark;
|
||||
final isDarkTheme = ref.read(themeProvider) == ThemeMode.dark ||
|
||||
(ref.read(themeProvider) == ThemeMode.system &&
|
||||
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
||||
|
||||
return PopScope(
|
||||
canPop: false, // Allow back navigation only if not login screen
|
||||
onPopInvokedWithResult: (didPop, result) {
|
||||
if (didPop) return;
|
||||
logout(context);// Show exit confirmation dialog
|
||||
},
|
||||
child: Scaffold(
|
||||
backgroundColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
||||
body: Stack(children: [
|
||||
SingleChildScrollView(
|
||||
child: SafeArea(
|
||||
child: _isPasswordUpdated
|
||||
? _buildSuccessContent(screenHeight, screenWidth)
|
||||
: _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
|
||||
),
|
||||
),
|
||||
],
|
||||
canPop: false, // Allow back navigation only if not login screen
|
||||
onPopInvokedWithResult: (didPop, result) {
|
||||
if (didPop) return;
|
||||
logout(context); // Show exit confirmation dialog
|
||||
},
|
||||
child: Scaffold(
|
||||
backgroundColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
||||
body: Stack(children: [
|
||||
SingleChildScrollView(
|
||||
child: SafeArea(
|
||||
child: _isPasswordUpdated
|
||||
? _buildSuccessContent(
|
||||
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
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
])));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Widget _buildPasswordForm(
|
||||
WidgetRef ref, double screenHeight, double screenWidth) {
|
||||
final passwordLocale = ref.watch(localeProvider);
|
||||
@ -310,6 +309,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
final isDarkTheme = themeMode == ThemeMode.dark ||
|
||||
(themeMode == ThemeMode.system &&
|
||||
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
||||
|
||||
return Form(
|
||||
key: _formKey,
|
||||
child: Padding(
|
||||
@ -334,7 +334,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
// Icons.close,
|
||||
Icons.arrow_back_ios,
|
||||
size: 24, // Icon size
|
||||
color: isDarkTheme ? Colors.white : Colors.black, // Icon color
|
||||
color: isDarkTheme
|
||||
? Colors.white
|
||||
: Colors.black, // Icon color
|
||||
),
|
||||
),
|
||||
), // Left icon
|
||||
@ -375,7 +377,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
),
|
||||
fontSize: passwordLocale?.languageCode == 'ar' ? 24 : 26,
|
||||
fontWeight: FontWeight.w300,
|
||||
color: isDarkTheme ? Colors.white : null,
|
||||
color: isDarkTheme ? Colors.white : Colors.black,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
@ -394,7 +396,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize:
|
||||
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
||||
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
||||
fontWeight: FontWeight.w700,
|
||||
color: Color(0xFF898C81)),
|
||||
),
|
||||
@ -407,7 +409,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize:
|
||||
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
||||
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
||||
color: Color(0xFF898C81),
|
||||
fontWeight: FontWeight.w700),
|
||||
),
|
||||
@ -423,12 +425,13 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
hintText: AppLocalizations.of(context)!.old_password,
|
||||
// prefixIcon: Icon(Icons.lock, color: Colors.blue),
|
||||
hintStyle: TextStyle(
|
||||
color: isDarkTheme ? Colors.white : Color(0xFFC3C6CB),
|
||||
fontWeight: FontWeight.w400,
|
||||
color: isDarkTheme ? Colors.white : Color(0xFFC3C6CB),
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),),
|
||||
),
|
||||
),
|
||||
prefixIconConstraints: const BoxConstraints(
|
||||
maxWidth: 25 + 16 + 10,
|
||||
maxHeight: 25 + (8 * 2),
|
||||
@ -439,11 +442,16 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
end: 10,
|
||||
),
|
||||
child: Image.asset(
|
||||
isDarkTheme ? MiscIconAssetPath.lockDark : MiscIconAssetPath.lockLight,
|
||||
isDarkTheme
|
||||
? MiscIconAssetPath.lockDark
|
||||
: MiscIconAssetPath.lockLight,
|
||||
fit: BoxFit.fitHeight,
|
||||
height: 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(
|
||||
@ -460,7 +468,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
: MiscIconAssetPath.visibleOn,
|
||||
|
||||
color: Color(
|
||||
0xFF9EA2A9,
|
||||
0xFFB68A34,
|
||||
), // Apply color if needed, but keep in mind `Image.asset` might not support color directly.
|
||||
width: 24,
|
||||
height: 24,
|
||||
@ -475,8 +483,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||
color: Color(0xFFB68A34),
|
||||
// color:
|
||||
// MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||
width: 1),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
@ -507,12 +516,13 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
hintText: AppLocalizations.of(context)!.enter_new_password,
|
||||
// prefixIcon: Icon(Icons.lock, color: Colors.blue),
|
||||
hintStyle: TextStyle(
|
||||
color: Color(0xFFC3C6CB),
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFC3C6CB),
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),),
|
||||
),
|
||||
),
|
||||
prefixIconConstraints: const BoxConstraints(
|
||||
maxWidth: 25 + 16 + 10,
|
||||
maxHeight: 25 + (8 * 2),
|
||||
@ -527,7 +537,8 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
fit: BoxFit.fitHeight,
|
||||
height: 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
|
||||
? MiscIconAssetPath.visibilityOff
|
||||
: MiscIconAssetPath.visibleOn,
|
||||
|
||||
color: Color(
|
||||
0xFF9EA2A9), // Apply color if needed, but keep in mind `Image.asset` might not support color directly.
|
||||
color: Color(0xFFB68A34),
|
||||
// color: Color(
|
||||
// 0xFF9EA2A9), // Apply color if needed, but keep in mind `Image.asset` might not support color directly.
|
||||
width: 24,
|
||||
height: 24,
|
||||
),
|
||||
@ -559,8 +570,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||
color: Color(0xFFB68A34),
|
||||
// color:
|
||||
// MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||
width: 1),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
@ -589,12 +601,13 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
// hintText: 'Confirm new password',
|
||||
hintText: AppLocalizations.of(context)!.confirm_new_password,
|
||||
hintStyle: TextStyle(
|
||||
color: Color(0xFFC3C6CB),
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFC3C6CB),
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),),
|
||||
),
|
||||
),
|
||||
prefixIconConstraints: const BoxConstraints(
|
||||
maxWidth: 25 + 16 + 10,
|
||||
maxHeight: 25 + (8 * 2),
|
||||
@ -609,7 +622,8 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
fit: BoxFit.fitHeight,
|
||||
height: 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
|
||||
? MiscIconAssetPath.visibilityOff
|
||||
: MiscIconAssetPath.visibleOn,
|
||||
|
||||
color: Color(
|
||||
0xFF9EA2A9), // Apply color if needed, but keep in mind `Image.asset` might not support color directly.
|
||||
color: Color(0xFFB68A34),
|
||||
// color: Color(
|
||||
// 0xFF9EA2A9), // Apply color if needed, but keep in mind `Image.asset` might not support color directly.
|
||||
width: 24,
|
||||
height: 24,
|
||||
),
|
||||
@ -641,8 +655,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||
color: Color(0xFFB68A34),
|
||||
// color:
|
||||
// MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||
width: 1),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
@ -681,7 +696,8 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
}
|
||||
},
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Colors.brown[300],
|
||||
backgroundColor: Color(0xFFB68A34),
|
||||
// backgroundColor: Colors.brown[300],
|
||||
padding: EdgeInsets.symmetric(horizontal: 80, vertical: 16),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
@ -698,7 +714,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize:
|
||||
passwordLocale?.languageCode == 'ar' ? 14 : 18,
|
||||
passwordLocale?.languageCode == 'ar' ? 14 : 18,
|
||||
color: Colors.white),
|
||||
),
|
||||
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');
|
||||
return Padding(
|
||||
padding: EdgeInsets.all(20.0),
|
||||
@ -753,7 +770,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
),
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF414042),
|
||||
color: isDarkTheme ? Colors.white : Color(0xFF414042),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 20),
|
||||
@ -779,7 +796,8 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
),
|
||||
),
|
||||
backgroundColor: WidgetStatePropertyAll(
|
||||
MyTheme.topicColor(IndicatorTopic.social),
|
||||
Color(0xFFB68A34),
|
||||
// MyTheme.topicColor(IndicatorTopic.social),
|
||||
),
|
||||
// surfaceTintColor: MaterialStatePropertyAll(
|
||||
// MyTheme.economy[800],
|
||||
@ -810,7 +828,7 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: screenHeight*0.25),
|
||||
SizedBox(height: screenHeight * 0.25),
|
||||
// Spacer(),
|
||||
Center(
|
||||
// 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/presentation/Screens/profilepage.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/my_toggle.dart';
|
||||
@ -293,8 +294,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)
|
||||
),
|
||||
)),
|
||||
),
|
||||
content: Text(
|
||||
context.translate(
|
||||
@ -304,8 +304,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)
|
||||
),
|
||||
)),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
@ -313,24 +312,28 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
Navigator.pop(context);
|
||||
setState(() {
|
||||
isRegistering =
|
||||
false; // Re-enable the button after error
|
||||
false; // Re-enable the button after error
|
||||
});
|
||||
},
|
||||
style: TextButton.styleFrom(
|
||||
backgroundColor:
|
||||
Color(0xFFAA8E83), // Set background color
|
||||
Color(0xFFAA8E83), // Set background color
|
||||
foregroundColor: Colors.white,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(10.0), // Set text color
|
||||
BorderRadius.circular(10.0), // Set text color
|
||||
),
|
||||
),
|
||||
child: Text(
|
||||
context.translate('Ok', 'حسنًا'),
|
||||
style: TextStyle(color: Colors.white, fontSize: 16, fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),),
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 16,
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
@ -360,8 +363,6 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
double screenheight = MediaQuery.of(context).size.height;
|
||||
@ -415,7 +416,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
if (didPop) return;
|
||||
context.go('/login'); // Show exit confirmation dialog
|
||||
},
|
||||
child:Scaffold(
|
||||
child: Scaffold(
|
||||
backgroundColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
||||
body: SafeArea(
|
||||
child: Stack(children: [
|
||||
@ -456,13 +457,20 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
Column(children: [
|
||||
registrationSuccess
|
||||
? 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(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
SizedBox(height: screenheight / 4),
|
||||
buildIconContainer(
|
||||
Icons.check_circle_rounded, Color(0xFF7DAFBC)),
|
||||
buildIconContainer(Icons.check_circle_rounded,
|
||||
Color(0xFFB68A34)
|
||||
// Color(0xFF7DAFBC)
|
||||
|
||||
),
|
||||
SizedBox(height: 20),
|
||||
Text(
|
||||
context.translate(
|
||||
@ -476,8 +484,9 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
),
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF414042)
|
||||
),
|
||||
color: isDarkTheme
|
||||
? Color(0xFFFFFFFF)
|
||||
: Color(0xFF414042)),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Text(
|
||||
@ -491,14 +500,21 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize: 14,
|
||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81),
|
||||
color: isDarkTheme
|
||||
? Color(0xFFFFFFFF)
|
||||
: Color(0xFF898C81),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
ElevatedButton(
|
||||
onPressed: () => {context.go('/login')},
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: isDarkTheme ? Color(0xFF24B4FB) : Color(0xFFAA8E83), // Background color
|
||||
backgroundColor: Color(0xFFB68A34),
|
||||
|
||||
// isDarkTheme
|
||||
// ? Color(0xFF24B4FB)
|
||||
// : Color(
|
||||
// 0xFFAA8E83), // Background color
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(
|
||||
12), // Border radius
|
||||
@ -520,14 +536,14 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
Center(
|
||||
child: Container(
|
||||
height: screenheight / 16,
|
||||
width: screenwidth / 2.5,
|
||||
// width: screenwidth / 2.5,
|
||||
decoration: BoxDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
isDarkTheme
|
||||
? BannerAssetPath.fcscLogoDark
|
||||
: BannerAssetPath.fcscLogoLight), // Background image asset
|
||||
fit: BoxFit.fill,
|
||||
image: AssetImage(isDarkTheme
|
||||
? BannerAssetPath.fcscLogoDark
|
||||
: BannerAssetPath
|
||||
.fcscLogoLight), // Background image asset
|
||||
// fit: BoxFit.fill,
|
||||
),
|
||||
),
|
||||
))
|
||||
@ -556,7 +572,9 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
),
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF414042)),
|
||||
color: isDarkTheme
|
||||
? Color(0xFFFFFFFF)
|
||||
: Color(0xFF414042)),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Text(
|
||||
@ -570,7 +588,9 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize: 14,
|
||||
color: isDarkTheme ? Color(0xFFEEEEEE) : Color(0xFF898C81),
|
||||
color: isDarkTheme
|
||||
? Color(0xFFEEEEEE)
|
||||
: Color(0xFF898C81),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
@ -590,11 +610,15 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
context.translate(
|
||||
'Retry', 'أعد المحاولة'),
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: isDarkTheme ? Color(0xFF24B4FB) : Color(0xFFAA8E83),
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: Color(0xFFB68A34),
|
||||
|
||||
// color: isDarkTheme
|
||||
// ? Color(0xFF24B4FB)
|
||||
// : Color(0xFFAA8E83),
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -602,14 +626,14 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
Center(
|
||||
child: Container(
|
||||
height: screenheight / 16,
|
||||
width: screenwidth / 2.5,
|
||||
// width: screenwidth / 2.5,
|
||||
decoration: BoxDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
isDarkTheme
|
||||
? BannerAssetPath.fcscLogoDark
|
||||
: BannerAssetPath.fcscLogoLight), // Background image asset
|
||||
fit: BoxFit.fill,
|
||||
image: AssetImage(isDarkTheme
|
||||
? BannerAssetPath.fcscLogoDark
|
||||
: BannerAssetPath
|
||||
.fcscLogoLight), // Background image asset
|
||||
// fit: BoxFit.fill,
|
||||
),
|
||||
),
|
||||
))
|
||||
@ -620,8 +644,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
key: _formKey,
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
// mainAxisAlignment:
|
||||
// MainAxisAlignment.center,
|
||||
children: [
|
||||
SizedBox(height: screenheight / 60),
|
||||
Text(
|
||||
@ -629,13 +653,15 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
AppLocalizations.of(context)!
|
||||
.register_title,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize: 32,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF000000),
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize: 32,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: isDarkTheme
|
||||
? Color(0xFFFFFFFF)
|
||||
: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
@ -649,12 +675,14 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
),
|
||||
fontSize:
|
||||
context.translate(18.0, 14.0),
|
||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81),
|
||||
color: isDarkTheme
|
||||
? Color(0xFFFFFFFF)
|
||||
: Color(0xFF898C81),
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
|
||||
SizedBox(height: 20),
|
||||
SizedBox(height: 15),
|
||||
// Display this if registration is pending approval
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
@ -667,9 +695,13 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
// focusNode: _focusNodes[0],
|
||||
decoration: InputDecoration(
|
||||
filled: true,
|
||||
fillColor: isDarkTheme ? const Color(0xFF000000) : Colors.white,
|
||||
fillColor: isDarkTheme
|
||||
? const Color(0xFF000000)
|
||||
: Colors.white,
|
||||
errorStyle: TextStyle(
|
||||
color: isDarkTheme ? Color(0xFFFFA200) : Color(0xFFb22222),
|
||||
color: isDarkTheme
|
||||
? Color(0xFFFFA200)
|
||||
: Color(0xFFb22222),
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
@ -711,7 +743,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
borderRadius:
|
||||
BorderRadius.circular(10),
|
||||
borderSide: BorderSide(
|
||||
color: Color(0xFFB68A34), // ✅ border
|
||||
color: Color(
|
||||
0xFFB68A34), // ✅ border
|
||||
width: 1), // Enabled border
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
@ -743,7 +776,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: const Color(0xFFC3C6CB),
|
||||
color: const Color(0xFFC3C6CB),
|
||||
fontSize: registerLocale
|
||||
?.languageCode ==
|
||||
'ar'
|
||||
@ -770,9 +803,13 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
// focusNode: _focusNodes[1],
|
||||
decoration: InputDecoration(
|
||||
filled: true,
|
||||
fillColor: isDarkTheme ? const Color(0xFF000000) : Colors.white,
|
||||
fillColor: isDarkTheme
|
||||
? const Color(0xFF000000)
|
||||
: Colors.white,
|
||||
errorStyle: TextStyle(
|
||||
color: isDarkTheme ? Color(0xFFFFA200) : Color(0xFFb22222),
|
||||
color: isDarkTheme
|
||||
? Color(0xFFFFA200)
|
||||
: Color(0xFFb22222),
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
@ -842,7 +879,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: const Color(0xFFC3C6CB),
|
||||
color: const Color(0xFFC3C6CB),
|
||||
fontSize: registerLocale
|
||||
?.languageCode ==
|
||||
'ar'
|
||||
@ -873,9 +910,13 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
obscureText: _obscurePassword,
|
||||
decoration: InputDecoration(
|
||||
filled: true,
|
||||
fillColor: isDarkTheme ? const Color(0xFF000000) : Colors.white,
|
||||
fillColor: isDarkTheme
|
||||
? const Color(0xFF000000)
|
||||
: Colors.white,
|
||||
errorStyle: TextStyle(
|
||||
color: isDarkTheme ? Color(0xFFFFA200) : Color(0xFFb22222),
|
||||
color: isDarkTheme
|
||||
? Color(0xFFFFA200)
|
||||
: Color(0xFFb22222),
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
@ -977,7 +1018,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: const Color(0xFFC3C6CB),
|
||||
color: const Color(0xFFC3C6CB),
|
||||
fontSize: registerLocale
|
||||
?.languageCode ==
|
||||
'ar'
|
||||
@ -991,7 +1032,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
MaxLengthEnforcement.enforced,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
SizedBox(height: 10),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
top: 5.0,
|
||||
@ -1006,9 +1047,13 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
_obscureConfirmPassword,
|
||||
decoration: InputDecoration(
|
||||
filled: true,
|
||||
fillColor: isDarkTheme ? const Color(0xFF000000) : Colors.white,
|
||||
fillColor: isDarkTheme
|
||||
? const Color(0xFF000000)
|
||||
: Colors.white,
|
||||
errorStyle: TextStyle(
|
||||
color: isDarkTheme ? Color(0xFFFFA200) : Color(0xFFb22222),
|
||||
color: isDarkTheme
|
||||
? Color(0xFFFFA200)
|
||||
: Color(0xFFb22222),
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
@ -1099,7 +1144,7 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: const Color(0xFFC3C6CB),
|
||||
color: const Color(0xFFC3C6CB),
|
||||
fontSize: registerLocale
|
||||
?.languageCode ==
|
||||
'ar'
|
||||
@ -1140,8 +1185,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
},
|
||||
side: BorderSide(
|
||||
color: showError
|
||||
? Color(0xFFD83731)
|
||||
: Color(0xFFB68A34),
|
||||
? Color(0xFFD83731)
|
||||
: Color(0xFFB68A34),
|
||||
width: 1,
|
||||
),
|
||||
),
|
||||
@ -1159,7 +1204,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
.agree,
|
||||
// text: 'I agree to ',
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
fontFamily:
|
||||
context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
@ -1170,7 +1216,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
'ar'
|
||||
? 12
|
||||
: 14,
|
||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81), // Change to your desired color
|
||||
color: isDarkTheme
|
||||
? Color(0xFFFFFFFF)
|
||||
: Color(
|
||||
0xFF898C81), // Change to your desired color
|
||||
),
|
||||
children: [
|
||||
TextSpan(
|
||||
@ -1184,7 +1233,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
.terms_conditions,
|
||||
// text: 'Terms & Conditions',
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
fontFamily: context
|
||||
.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
@ -1197,7 +1247,11 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
fontWeight:
|
||||
FontWeight
|
||||
.bold,
|
||||
color:isDarkTheme ? Color(0xFFB68A35) : Color(0xFF985400),
|
||||
color: isDarkTheme
|
||||
? Color(
|
||||
0xFFB68A35)
|
||||
: Color(
|
||||
0xFF985400),
|
||||
// Makes the text bold
|
||||
// decoration:
|
||||
// TextDecoration.underline,
|
||||
@ -1212,11 +1266,16 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
.of(context)!
|
||||
.t_and,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
fontFamily: context
|
||||
.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: isDarkTheme ? Color(0xFFFFFFFF) : Color(0xFF898C81),
|
||||
color: isDarkTheme
|
||||
? Color(
|
||||
0xFFFFFFFF)
|
||||
: Color(
|
||||
0xFF898C81),
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
@ -1229,7 +1288,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
.of(context)!
|
||||
.privacy_policy,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
fontFamily: context
|
||||
.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
@ -1242,7 +1302,11 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
'ar'
|
||||
? 12
|
||||
: 14,
|
||||
color: isDarkTheme ? Color(0xFFB68A35) : Color(0xFF985400),
|
||||
color: isDarkTheme
|
||||
? Color(
|
||||
0xFFB68A35)
|
||||
: Color(
|
||||
0xFF985400),
|
||||
// decoration:
|
||||
// TextDecoration.underline,
|
||||
decorationColor:
|
||||
@ -1256,7 +1320,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
.of(context)!
|
||||
.conditions,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
fontFamily: context
|
||||
.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
@ -1267,7 +1332,11 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
'ar'
|
||||
? 12
|
||||
: 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(
|
||||
'Required', 'مطلوب'),
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
fontFamily:
|
||||
context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
@ -1329,7 +1399,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
? null
|
||||
: _registerUser,
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Color(0xFFB68A34), // Brownish color for Register
|
||||
backgroundColor: Color(
|
||||
0xFFB68A34), // Brownish color for Register
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(10),
|
||||
@ -1344,76 +1415,8 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
context)!
|
||||
.register_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
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
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(
|
||||
fontFamily:
|
||||
context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
@ -1428,17 +1431,94 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
Icon(
|
||||
Icons
|
||||
.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(
|
||||
height: 10,
|
||||
),
|
||||
Center(
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(20.0),
|
||||
// child: Container(
|
||||
// height: screenheight / 16,
|
||||
// width: screenwidth / 3,
|
||||
@ -1452,9 +1532,9 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
|
||||
// )
|
||||
child: fcscBanner,
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
// SizedBox(
|
||||
// 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/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
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/routes/bottom_bar_routes/tab_routes/home_route.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 'auth_verification/changepassword.dart';
|
||||
import 'demo_home.dart';
|
||||
@ -71,14 +72,17 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
|
||||
// Date format for the display
|
||||
final DateFormat _dateFormat = DateFormat('yyyy-MM-dd');
|
||||
final List<String> _countries = [
|
||||
'United Arab Emirates',
|
||||
'United States',
|
||||
'India',
|
||||
'Canada'
|
||||
];
|
||||
// final List<String> _countries = [
|
||||
// 'United Arab Emirates',
|
||||
// 'United States',
|
||||
// 'India',
|
||||
// 'Canada'
|
||||
// ];
|
||||
final List<String> preferred_language = ['English', 'Arabic'];
|
||||
String? _selectedCountry;
|
||||
// String? _selectedCountry;
|
||||
ISOCountry? _selectedCountry;
|
||||
String? preferredLang;
|
||||
|
||||
String? _selectedLanguage;
|
||||
bool isChecked = false;
|
||||
bool showError = false;
|
||||
@ -98,6 +102,8 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
super.initState();
|
||||
// print(widget.userId);
|
||||
|
||||
_selectedCountry ??= ISOCountry.numeric784;
|
||||
|
||||
final themeMode = ref.read(themeProvider);
|
||||
isDarkTheme = themeMode == ThemeMode.dark ||
|
||||
(themeMode == ThemeMode.system &&
|
||||
@ -198,10 +204,10 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
_isLoading = true; // Start loading
|
||||
});
|
||||
final XFile? pickedFile =
|
||||
await _picker.pickImage(source: ImageSource.gallery);
|
||||
await _picker.pickImage(source: ImageSource.gallery);
|
||||
if (pickedFile != null) {
|
||||
final String fileExtension =
|
||||
pickedFile.path.split('.').last.toLowerCase();
|
||||
pickedFile.path.split('.').last.toLowerCase();
|
||||
if (fileExtension == 'jpg' ||
|
||||
fileExtension == 'jpeg' ||
|
||||
fileExtension == 'png' ||
|
||||
@ -212,13 +218,15 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
});
|
||||
} else {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('Please select a JPG, JPEG, or PNG file.',
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)
|
||||
),)),
|
||||
SnackBar(
|
||||
content: Text(
|
||||
'Please select a JPG, JPEG, or PNG file.',
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)),
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -245,7 +253,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
return Theme(
|
||||
data: Theme.of(context).copyWith(
|
||||
dialogBackgroundColor:
|
||||
Colors.white, // Background color of the date picker
|
||||
Colors.white, // Background color of the date picker
|
||||
textButtonTheme: TextButtonThemeData(
|
||||
style: ButtonStyle(
|
||||
shape: WidgetStateProperty.all(RoundedRectangleBorder(
|
||||
@ -336,8 +344,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
// String username = 'users55538';
|
||||
// String email = 'surendarsuri30@gmail.com';
|
||||
String dateOfBirth = _dateController.text; // in DD/MM/YYYY format
|
||||
String countryRegion = _selectedCountry ?? '';
|
||||
String preferredLang = _selectedLanguage == 'English' ? 'en' : 'ar';
|
||||
// String countryRegion = _selectedCountry ?? '';
|
||||
String countryRegion = context.translate(
|
||||
_selectedCountry?.nameEN ?? '',
|
||||
_selectedCountry?.nameAR ?? '',
|
||||
);
|
||||
|
||||
preferredLang = _selectedLanguage == 'English' ? 'en' : 'ar';
|
||||
bool termsAccepted = isChecked;
|
||||
|
||||
// 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
|
||||
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);
|
||||
|
||||
// Add other fields
|
||||
request.fields['full_name'] = fullName;
|
||||
request.fields['dob'] = formattedDob;
|
||||
request.fields['country_region'] = countryRegion;
|
||||
request.fields['language'] = preferredLang;
|
||||
request.fields['language'] = preferredLang!;
|
||||
request.fields['is_profile_completed'] = 'True';
|
||||
|
||||
// Add the file, if available
|
||||
@ -371,14 +384,15 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
// Send the request
|
||||
final response = await request.send();
|
||||
print(response);
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text(AppLocalizations.of(context)!.profile_updated_successfully,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)
|
||||
),)));
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
|
||||
content: Text(
|
||||
AppLocalizations.of(context)!.profile_updated_successfully,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)),
|
||||
)));
|
||||
// **Set Default Locale in Provider**
|
||||
print('_selectedLanguage $_selectedLanguage');
|
||||
preferredLang = _selectedLanguage == 'English' ? 'en' : 'ar';
|
||||
@ -397,12 +411,17 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
context.go('/welcomePage');
|
||||
} catch (error) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text(context.translate("Failed to update profile: $error",'$error فشل في تحديث الملف الشخصي: '),style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)
|
||||
),)),);
|
||||
SnackBar(
|
||||
content: Text(
|
||||
context.translate("Failed to update profile: $error",
|
||||
'$error فشل في تحديث الملف الشخصي: '),
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)),
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -444,21 +463,27 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
'Logout',
|
||||
'تسجيل الخروج',
|
||||
),
|
||||
style:
|
||||
TextStyle(color: Color(0xFF898C81), fontWeight: FontWeight.w700,fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),),
|
||||
style: TextStyle(
|
||||
color: Color(0xFF898C81),
|
||||
fontWeight: FontWeight.w700,
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
),
|
||||
),
|
||||
content: Text(
|
||||
context.translate(
|
||||
'Are you sure you want to logout?',
|
||||
'هل أنت متأكد أنك تريد تسجيل الخروج؟',
|
||||
),
|
||||
style: TextStyle(color: Color(0xFF898C81),fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),),
|
||||
style: TextStyle(
|
||||
color: Color(0xFF898C81),
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
@ -477,10 +502,11 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
'إلغاء',
|
||||
),
|
||||
style: TextStyle(
|
||||
color: Color(0xFFAA8E83),fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
), // Text color
|
||||
color: Color(0xFFAA8E83),
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
), // Text color
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -499,10 +525,11 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
'تسجيل الخروج',
|
||||
),
|
||||
style: TextStyle(
|
||||
color: Colors.white, fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),// Text color
|
||||
color: Colors.white,
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
), // Text color
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -528,6 +555,15 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
(themeMode == ThemeMode.system &&
|
||||
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(
|
||||
canPop: false, // Allow back navigation only if not login screen
|
||||
onPopInvokedWithResult: (didPop, result) {
|
||||
@ -541,16 +577,23 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
elevation: 0,
|
||||
leading: IconButton(
|
||||
icon: Icon(Icons.arrow_back_ios_new, color: Colors.black),
|
||||
onPressed: () {
|
||||
context.go('/');
|
||||
onPressed: () async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await _authRepo.logout();
|
||||
prefs.clear();
|
||||
context.go('/login');
|
||||
// context.go('/');
|
||||
},
|
||||
),
|
||||
title: Text(
|
||||
AppLocalizations.of(context)!.my_profile,
|
||||
style: TextStyle(color: Color(0xFF985400),fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),),
|
||||
style: TextStyle(
|
||||
color: Color(0xFF985400),
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
Consumer(
|
||||
@ -633,7 +676,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
backgroundImage: _profileImage != null
|
||||
? FileImage(_profileImage!)
|
||||
: AssetImage("assets/edit_profile/profile.png")
|
||||
as ImageProvider,
|
||||
as ImageProvider,
|
||||
child: Align(
|
||||
alignment: Alignment.bottomRight,
|
||||
child: GestureDetector(
|
||||
@ -657,7 +700,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
child: CircularProgressIndicator(
|
||||
strokeWidth: 2,
|
||||
valueColor:
|
||||
AlwaysStoppedAnimation<Color>(Colors.grey),
|
||||
AlwaysStoppedAnimation<Color>(Colors.grey),
|
||||
),
|
||||
),
|
||||
],
|
||||
@ -745,10 +788,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
Text(
|
||||
AppLocalizations.of(context)!.full_name,
|
||||
style: TextStyle(
|
||||
fontSize: 16, fontWeight: FontWeight.w500,fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),),
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
@ -776,8 +822,11 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
borderSide: BorderSide(
|
||||
color: isDarkTheme ? Colors.white : MyTheme.topicColor(IndicatorTopic.economy)
|
||||
.shade400,
|
||||
color: Color(0xFFB68A34),
|
||||
// color: isDarkTheme
|
||||
// ? Colors.white
|
||||
// : MyTheme.topicColor(IndicatorTopic.economy)
|
||||
// .shade400,
|
||||
width: 1), // Enabled border
|
||||
),
|
||||
hintText: _showHints[2] ? 'Enter the name' : null,
|
||||
@ -791,7 +840,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
),
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
||||
color: Color(0xFFB68A34),
|
||||
// color:
|
||||
// isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
||||
),
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
@ -807,12 +858,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
Text(
|
||||
AppLocalizations.of(context)!.dob,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize: 16, fontWeight: FontWeight.w500,
|
||||
color:isDarkTheme ? Colors.white : null,
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: isDarkTheme ? Colors.white : null,
|
||||
),
|
||||
),
|
||||
],
|
||||
@ -828,14 +880,19 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
borderSide: BorderSide(
|
||||
color:isDarkTheme ? Colors.white :
|
||||
MyTheme.topicColor(IndicatorTopic.economy)
|
||||
.shade400,
|
||||
color: Color(0xFFB68A34),
|
||||
// color: isDarkTheme
|
||||
// ? Colors.white
|
||||
// : MyTheme.topicColor(IndicatorTopic.economy)
|
||||
// .shade400,
|
||||
width: 1), // Enabled border
|
||||
),
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color:isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
||||
color: Color(0xFFB68A34),
|
||||
// color: isDarkTheme
|
||||
// ? Colors.white
|
||||
// : Color(0xFF7296BE),
|
||||
),
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
@ -846,7 +903,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: isDarkTheme ? Colors.white : Color(0xFFC3C6CB),
|
||||
color:
|
||||
isDarkTheme ? Colors.white : Color(0xFFC3C6CB),
|
||||
// color: Color(0xFFB68A34),
|
||||
fontSize: 14,
|
||||
),
|
||||
|
||||
@ -854,11 +913,11 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
width: 45,
|
||||
padding: EdgeInsets.only(right: 1),
|
||||
alignment:
|
||||
Alignment.center, // Center the icon vertically
|
||||
Alignment.center, // Center the icon vertically
|
||||
child: Icon(
|
||||
Icons.keyboard_arrow_down_sharp,
|
||||
color:
|
||||
_isHoveringDate ? Colors.black : Colors.grey,
|
||||
_isHoveringDate ? Colors.black : Colors.grey,
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -878,9 +937,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize: 16, fontWeight: FontWeight.w500,
|
||||
color: isDarkTheme ? Colors.white : null
|
||||
),
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: isDarkTheme ? Colors.white : null),
|
||||
),
|
||||
],
|
||||
),
|
||||
@ -890,20 +949,26 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
setState(() => _isHoveringDropdown = true),
|
||||
onExit: (_) =>
|
||||
setState(() => _isHoveringDropdown = false),
|
||||
child: DropdownButtonFormField<String>(
|
||||
|
||||
child: DropdownButtonFormField<ISOCountry>(
|
||||
isExpanded: true,
|
||||
value: _selectedCountry,
|
||||
decoration: InputDecoration(
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
borderSide: BorderSide(
|
||||
color: isDarkTheme ? Colors.white :
|
||||
MyTheme.topicColor(IndicatorTopic.economy)
|
||||
.shade400,
|
||||
color: Color(0xFFB68A34),
|
||||
// color: Colors.red,
|
||||
// : MyTheme.topicColor(
|
||||
// IndicatorTopic.economy).shade400,
|
||||
width: 1), // Enabled border
|
||||
),
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
||||
color: Color(0xFFB68A34),
|
||||
// color: isDarkTheme
|
||||
// ? Colors.white
|
||||
// : Color(0xFF7296BE),
|
||||
),
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
@ -913,25 +978,90 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
? 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,
|
||||
),),
|
||||
))
|
||||
.map((item) => DropdownMenuItem<ISOCountry>(
|
||||
value: item,
|
||||
child: SizedBox(
|
||||
width: double.infinity,
|
||||
child: Text(
|
||||
// item.nameEN,
|
||||
context.translate(
|
||||
item.nameEN, item.nameAR),
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: 1,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
// color: Colors.red
|
||||
color:
|
||||
isDarkTheme ? Colors.white : null,
|
||||
),
|
||||
),
|
||||
),
|
||||
))
|
||||
.toList(),
|
||||
onChanged: (String? newValue) {
|
||||
onChanged: (ISOCountry? newValue) {
|
||||
setState(() {
|
||||
_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),
|
||||
Row(
|
||||
@ -940,12 +1070,13 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
Text(
|
||||
AppLocalizations.of(context)!.preferredLang,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize: 16, fontWeight: FontWeight.w500,
|
||||
color: isDarkTheme ? Colors.white : null,
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: isDarkTheme ? Colors.white : null,
|
||||
),
|
||||
),
|
||||
],
|
||||
@ -962,14 +1093,18 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
borderSide: BorderSide(
|
||||
color: isDarkTheme ? Colors.white :
|
||||
MyTheme.topicColor(IndicatorTopic.economy)
|
||||
.shade400,
|
||||
color: Color(0xFFB68A34),
|
||||
// : MyTheme.topicColor(
|
||||
// IndicatorTopic.economy)
|
||||
// .shade400,
|
||||
width: 1), // Enabled border
|
||||
),
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
||||
color: Color(0xFFB68A34),
|
||||
// color: isDarkTheme
|
||||
// ? Colors.white
|
||||
// : Color(0xFF7296BE),
|
||||
),
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
@ -980,16 +1115,18 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
: Colors.grey),
|
||||
items: preferred_language
|
||||
.map((item) => DropdownMenuItem<String>(
|
||||
value: item,
|
||||
child: Text(item,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: isDarkTheme ? Colors.white : null,
|
||||
),),
|
||||
))
|
||||
value: item,
|
||||
child: Text(
|
||||
item,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: isDarkTheme ? Colors.white : null,
|
||||
),
|
||||
),
|
||||
))
|
||||
.toList(),
|
||||
onChanged: (String? newValue) {
|
||||
setState(() {
|
||||
@ -1012,9 +1149,14 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
},
|
||||
side: BorderSide(
|
||||
color: showError
|
||||
? isDarkTheme ? Color(0xFFFFA200) : Color(0xFFb22222)
|
||||
: isDarkTheme ? Colors.white : Color(0xFF7296BE),
|
||||
? isDarkTheme
|
||||
? Color(0xFFB68A34)
|
||||
: Color(0xFFb22222)
|
||||
: Color(0xFFB68A34),
|
||||
|
||||
// : isDarkTheme
|
||||
// ? Colors.white
|
||||
// : Color(0xFF7296BE),
|
||||
width: 1,
|
||||
),
|
||||
),
|
||||
@ -1034,7 +1176,10 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
),
|
||||
fontWeight: FontWeight.w500,
|
||||
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: [
|
||||
TextSpan(
|
||||
@ -1051,11 +1196,16 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
),
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: isDarkTheme ? Color(0xFF9EB3E4) : Color(0xFF985400),
|
||||
color: Color(0xFFB68A34),
|
||||
|
||||
// color: isDarkTheme
|
||||
// ? Color(0xFF9EB3E4)
|
||||
// : Color(0xFF985400),
|
||||
// Makes the text bold
|
||||
// decoration:
|
||||
// TextDecoration.underline,
|
||||
decorationColor: Color(0xFF985400),
|
||||
decorationColor: Color(0xFFB68A34),
|
||||
// decorationColor: Color(0xFF985400),
|
||||
decorationThickness: 1),
|
||||
),
|
||||
TextSpan(
|
||||
@ -1065,7 +1215,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: isDarkTheme ? Colors.white : Color(
|
||||
color: isDarkTheme
|
||||
? Colors.white
|
||||
: Color(
|
||||
0xFF898C81), // Change to your desired color
|
||||
),
|
||||
),
|
||||
@ -1082,10 +1234,14 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
color: isDarkTheme ? Color(0xFF9EB3E4) : Color(0xFF985400),
|
||||
color: Color(0xFFB68A34),
|
||||
|
||||
// color: isDarkTheme
|
||||
// ? Color(0xFF9EB3E4)
|
||||
// : Color(0xFF985400),
|
||||
// decoration:
|
||||
// TextDecoration.underline,
|
||||
decorationColor: Color(0xFF648CBA),
|
||||
decorationColor: Color(0xFFB68A34),
|
||||
decorationThickness: 1),
|
||||
),
|
||||
TextSpan(
|
||||
@ -1098,7 +1254,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
),
|
||||
fontWeight: FontWeight.w500,
|
||||
fontSize: 14,
|
||||
color: isDarkTheme ? Colors.white : Color(
|
||||
color: isDarkTheme
|
||||
? Colors.white
|
||||
: Color(
|
||||
0xFF898C81), // Change to your desired color
|
||||
),
|
||||
),
|
||||
@ -1147,7 +1305,10 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
AppLocalizations.of(context)!.change_password,
|
||||
style: TextStyle(
|
||||
// color: Color(0xFF648CBA),
|
||||
color: isDarkTheme ? Color(0xFF9EB3E4) : Color(0xFF985400),
|
||||
color: Color(0xFFB68A34),
|
||||
// color: isDarkTheme
|
||||
// ? Color(0xFF9EB3E4)
|
||||
// : Color(0xFF985400),
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w700,
|
||||
fontFamily: context.translate(
|
||||
@ -1173,12 +1334,15 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
} else {
|
||||
setState(() {
|
||||
showError =
|
||||
!isChecked; // Show error if the checkbox is not checked
|
||||
!isChecked; // Show error if the checkbox is not checked
|
||||
});
|
||||
}
|
||||
},
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: isDarkTheme ? Color(0xFF7296BE) :Color(0xFF92722A),
|
||||
backgroundColor: Color(0xFFB68A34),
|
||||
|
||||
// backgroundColor:
|
||||
// isDarkTheme ? Color(0xFF7296BE) : Color(0xFF92722A),
|
||||
minimumSize: Size(double.infinity, 50),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
@ -1186,14 +1350,17 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center, // Center the content
|
||||
MainAxisAlignment.center, // Center the content
|
||||
children: [
|
||||
Text(
|
||||
AppLocalizations.of(context)!.save,
|
||||
style: TextStyle(color: Colors.white,fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),),
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(width: 8), // Add space between text and icon
|
||||
Image.asset(
|
||||
@ -1258,35 +1425,36 @@ class ConfirmationDialog extends ConsumerWidget {
|
||||
children: [
|
||||
TextSpan(
|
||||
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(
|
||||
fontWeight: FontWeight.w700,
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
fontWeight: FontWeight.w700,
|
||||
color: isDarkTheme ? Colors.white : null,
|
||||
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(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
fontWeight: FontWeight.w700,
|
||||
color: isDarkTheme ? Colors.white : null,
|
||||
), // Bold for "date of birth"
|
||||
),
|
||||
TextSpan(
|
||||
text: ".",
|
||||
style: TextStyle(
|
||||
color: isDarkTheme ? Colors.white : null,
|
||||
)
|
||||
),
|
||||
text: ".",
|
||||
style: TextStyle(
|
||||
color: isDarkTheme ? Colors.white : null,
|
||||
)),
|
||||
],
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
@ -1309,23 +1477,36 @@ class ConfirmationDialog extends ConsumerWidget {
|
||||
Navigator.of(context).pop(false);
|
||||
},
|
||||
style: OutlinedButton.styleFrom(
|
||||
side: BorderSide(color: isDarkTheme ? Color(0xFF7296BE) : Color(0xFF92722A)),
|
||||
side: BorderSide(color: Color(0xFFB68A34)
|
||||
// color:
|
||||
// isDarkTheme ? Color(0xFF7296BE) : Color(0xFF92722A)
|
||||
//
|
||||
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(7)),
|
||||
), // Set the border color here
|
||||
),
|
||||
child: Text(
|
||||
"Cancel",
|
||||
style: TextStyle(color: isDarkTheme ? Color(0xFF7296BE) : Color(0xFF92722A),fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),),
|
||||
style: TextStyle(
|
||||
color: Color(0xFFB68A34),
|
||||
// color: isDarkTheme ? Color(0xFF7296BE) : Color(0xFF92722A),
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () => Navigator.of(context).pop(true),
|
||||
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,
|
||||
shape: RoundedRectangleBorder(
|
||||
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
|
||||
/// [showLogBtn] is also true exception is thrown;
|
||||
Future<T> loaderWithErrorDialog<T>(
|
||||
FutureOr<T> Function() computation, {
|
||||
Future<void> Function(
|
||||
Object error, [
|
||||
StackTrace stackTrace,
|
||||
])? errorDialogBuilder,
|
||||
}) async {
|
||||
FutureOr<T> Function() computation, {
|
||||
Future<void> Function(
|
||||
Object error, [
|
||||
StackTrace stackTrace,
|
||||
])? errorDialogBuilder,
|
||||
}) async {
|
||||
final loaderContext = await _pushLoaderDialog();
|
||||
late final T value;
|
||||
try {
|
||||
@ -100,20 +100,17 @@ extension Dialogs on BuildContext {
|
||||
final contentText = Text(content);
|
||||
return AlertDialog(
|
||||
title: Text(title,
|
||||
style: TextStyle(
|
||||
color: Color(0xFF898C81),
|
||||
fontWeight: FontWeight.w700)
|
||||
),
|
||||
style: TextStyle(
|
||||
color: Color(0xFF898C81), fontWeight: FontWeight.w700)),
|
||||
content: content.length > 300
|
||||
? SingleChildScrollView(
|
||||
child:Text(
|
||||
content,
|
||||
style: TextStyle(color: Color(0xFF898C81))
|
||||
),
|
||||
)
|
||||
child: Text(content,
|
||||
style: TextStyle(color: Color(0xFF898C81))),
|
||||
)
|
||||
: Text(
|
||||
content,
|
||||
style: TextStyle(color:Color(0xFF898C81)), // Set content text color
|
||||
style: TextStyle(
|
||||
color: Color(0xFF898C81)), // Set content text color
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
@ -122,11 +119,12 @@ extension Dialogs on BuildContext {
|
||||
rootNavigator: true,
|
||||
).pop,
|
||||
style: TextButton.styleFrom(
|
||||
backgroundColor: Color(0xFFAA8E83), // Background color
|
||||
// backgroundColor: Color(0xFFAA8E83), // Background color
|
||||
backgroundColor: Color(0xFFB68A34), // Background color
|
||||
foregroundColor: Colors.white, // Font (text) color
|
||||
side: BorderSide(
|
||||
// color: Color(0xFF92722A)), // Border outline color
|
||||
color: Color(0xFFAA8E83)), // Border outline color
|
||||
// color: Color(0xFF92722A)), // Border outline color
|
||||
color: Color(0xFFB68A34)), // Border outline color
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(8), // Optional: Rounded corners
|
||||
@ -154,11 +152,11 @@ extension Dialogs on BuildContext {
|
||||
);
|
||||
|
||||
Future<bool?> confirmationDialog(
|
||||
String titleText,
|
||||
String contentText, {
|
||||
String cancelText = 'Cancel',
|
||||
String confirmText = 'Confirm',
|
||||
}) =>
|
||||
String titleText,
|
||||
String contentText, {
|
||||
String cancelText = 'Cancel',
|
||||
String confirmText = 'Confirm',
|
||||
}) =>
|
||||
showDialog<bool>(
|
||||
context: this,
|
||||
barrierDismissible: false,
|
||||
|
||||
@ -10,6 +10,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:jwt_decoder/jwt_decoder.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:the_validator/the_validator.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/service.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/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/icons/misc_icon_asset_path.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/routes/bottom_bar_routes/tab_routes/home_route.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import '../../Screens/auth_verification/registration.dart';
|
||||
import 'package:pocketbase/pocketbase.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
@ -325,6 +329,175 @@ class LoginRoute extends HookConsumerWidget {
|
||||
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
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
@ -662,9 +835,9 @@ class LoginRoute extends HookConsumerWidget {
|
||||
print("Is Profile Complete: $isProfileComplete");
|
||||
|
||||
// Extract intendedPath from query parameters (if coming from redirect)
|
||||
final String? intendedPath =
|
||||
GoRouterState.of(context).uri.queryParameters['intendedPath'];
|
||||
print("Extracted intendedPath after login: $intendedPath");
|
||||
// final String? intendedPath =
|
||||
// GoRouterState.of(context).uri.queryParameters['intendedPath'];
|
||||
// print("Extracted intendedPath after login: $intendedPath");
|
||||
|
||||
if (!context.mounted) return;
|
||||
|
||||
@ -676,7 +849,7 @@ class LoginRoute extends HookConsumerWidget {
|
||||
} else {
|
||||
ref.read(localeProvider.notifier).setLocale(const Locale('en'));
|
||||
}
|
||||
context.go(intendedPath ?? '/myhomepage');
|
||||
context.go('/myhomepage');
|
||||
} else {
|
||||
print('Redirecting to Profile Setup');
|
||||
if (userId.isNotEmpty) {
|
||||
@ -972,7 +1145,9 @@ class LoginRoute extends HookConsumerWidget {
|
||||
final signInWithGoogleBtn = SizedBox(
|
||||
width: double.infinity,
|
||||
child: OutlinedButton(
|
||||
onPressed: () async {},
|
||||
onPressed: () async {
|
||||
googleLogin(context,ref,'google');
|
||||
},
|
||||
style: OutlinedButton.styleFrom(
|
||||
side: const BorderSide(color: Color(0xFF000000)),
|
||||
shape: RoundedRectangleBorder(
|
||||
@ -1010,7 +1185,9 @@ class LoginRoute extends HookConsumerWidget {
|
||||
final signInWithAppleBtn = SizedBox(
|
||||
width: double.infinity,
|
||||
child: OutlinedButton(
|
||||
onPressed: () async {},
|
||||
onPressed: () async {
|
||||
googleLogin(context,ref,'apple');
|
||||
},
|
||||
style: OutlinedButton.styleFrom(
|
||||
side: const BorderSide(color: Color(0xFF000000)),
|
||||
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);
|
||||
print('123456789');
|
||||
print(currentTheme);
|
||||
final isDark = currentTheme == ThemeMode.dark ||
|
||||
(currentTheme == ThemeMode.system &&
|
||||
final isDark = ref.read(themeProvider) == ThemeMode.dark ||
|
||||
(ref.read(themeProvider) == ThemeMode.system &&
|
||||
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
||||
|
||||
final themeMode = (isDark ? 'dark' : 'light');
|
||||
@ -1634,7 +1634,7 @@ class InfoCard extends StatelessWidget {
|
||||
Text(
|
||||
title,
|
||||
style: TextStyle(
|
||||
fontSize: 13,
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.w700,
|
||||
letterSpacing: 0,
|
||||
// color: Colors.black,
|
||||
|
||||
@ -6,6 +6,7 @@ import 'package:flutter_svg/svg.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
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:pocketbase/pocketbase.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
@ -270,9 +271,9 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
||||
AppLocalizations.of(context)!.removed_from_Bookmark,
|
||||
style: TextStyle(
|
||||
fontFamily: context.translate(
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)),
|
||||
'Roboto',
|
||||
'NotoKufi',
|
||||
)),
|
||||
),
|
||||
duration: Duration(seconds: 2),
|
||||
),
|
||||
@ -389,7 +390,7 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
||||
foregroundColor: Colors.white,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(10.0), // Set text color
|
||||
BorderRadius.circular(10.0), // Set text color
|
||||
),
|
||||
),
|
||||
child: Text(
|
||||
@ -463,7 +464,8 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
||||
final List<Map<String, dynamic>> tabs = [
|
||||
{
|
||||
'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,
|
||||
@ -480,11 +482,11 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
||||
];
|
||||
|
||||
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) {
|
||||
String mainTopic = bookmark['main_topic'].toString().trim().toLowerCase();
|
||||
String selectedTabTitle =
|
||||
tabs[selectedTabIndex]['title'].toString().trim().toLowerCase();
|
||||
tabs[selectedTabIndex]['title'].toString().trim().toLowerCase();
|
||||
|
||||
// Debugging prints
|
||||
print(
|
||||
@ -515,206 +517,212 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
||||
),
|
||||
body: isLoading
|
||||
? Container(
|
||||
color: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
||||
color: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
||||
// 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(
|
||||
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
|
||||
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',
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
: 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(
|
||||
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);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color: tabs[selectedTabIndex]
|
||||
['color'],
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(20),
|
||||
topRight: Radius.circular(20))
|
||||
|
||||
// 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);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
@ -836,11 +844,11 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
||||
}
|
||||
|
||||
Widget _buildBoxes(
|
||||
Map<String, dynamic> data,
|
||||
BuildContext context,
|
||||
Color styleColor,
|
||||
bool isDarkTheme,
|
||||
) {
|
||||
Map<String, dynamic> data,
|
||||
BuildContext context,
|
||||
Color styleColor,
|
||||
bool isDarkTheme,
|
||||
) {
|
||||
// Color borderColor = data['valueColor'];
|
||||
print('inside function $data');
|
||||
return GestureDetector(
|
||||
@ -953,9 +961,9 @@ class TabBarHeader extends StatelessWidget {
|
||||
|
||||
TabBarHeader(
|
||||
{required this.tabs,
|
||||
required this.selectedIndex,
|
||||
required this.onTabSelected,
|
||||
required this.isDarkTheme});
|
||||
required this.selectedIndex,
|
||||
required this.onTabSelected,
|
||||
required this.isDarkTheme});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@ -975,7 +983,7 @@ class TabBarHeader extends StatelessWidget {
|
||||
onPressed: () => onTabSelected(index),
|
||||
style: ButtonStyle(
|
||||
foregroundColor:
|
||||
MaterialStateProperty.resolveWith((states) {
|
||||
MaterialStateProperty.resolveWith((states) {
|
||||
return selectedIndex == index
|
||||
? entry.value['color']
|
||||
: Colors.grey[700];
|
||||
@ -1058,12 +1066,16 @@ class _CustomExpandableTileState extends State<CustomExpandableTile> {
|
||||
color: widget.isDarkTheme
|
||||
? Color(0xFF111111)
|
||||
: Colors
|
||||
.white, // Ensuring the background outside the rounded container is white
|
||||
.white, // Ensuring the background outside the rounded container is white
|
||||
),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
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(
|
||||
left: 16, bottom: 5, top: 5, right: 10),
|
||||
child: Row(
|
||||
@ -1102,9 +1114,9 @@ class _CustomExpandableTileState extends State<CustomExpandableTile> {
|
||||
// height: widget.isExpanded ? myheight * 0.4 : 0,
|
||||
child: widget.isExpanded
|
||||
? SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
widget.childWidget,
|
||||
child: Column(
|
||||
children: [
|
||||
widget.childWidget,
|
||||
// Container(
|
||||
// decoration: BoxDecoration(
|
||||
// color: Colors.white,
|
||||
@ -1127,9 +1139,9 @@ class _CustomExpandableTileState extends State<CustomExpandableTile> {
|
||||
// },
|
||||
// ),
|
||||
// ),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
)
|
||||
: 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');
|
||||
break;
|
||||
case 2:
|
||||
context.go('/competitiveness');
|
||||
// context.go('/competitiveness');
|
||||
break;
|
||||
case 3:
|
||||
context.go('/countryprofile');
|
||||
// context.go('/countryprofile');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,6 +13,7 @@ import file_selector_macos
|
||||
import firebase_core
|
||||
import firebase_messaging
|
||||
import flutter_secure_storage_darwin
|
||||
import google_sign_in_ios
|
||||
import package_info_plus
|
||||
import path_provider_foundation
|
||||
import share_plus
|
||||
@ -30,6 +31,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
||||
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
|
||||
FlutterSecureStorageDarwinPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageDarwinPlugin"))
|
||||
FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin"))
|
||||
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
||||
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
|
||||
|
||||
48
pubspec.lock
48
pubspec.lock
@ -804,6 +804,54 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
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:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@ -77,6 +77,7 @@ dependencies:
|
||||
app_settings: ^6.1.1
|
||||
appsflyer_sdk: ^6.16.2
|
||||
dotted_border: ^2.1.0
|
||||
google_sign_in: ^7.1.1
|
||||
|
||||
dependency_overrides:
|
||||
fading_edge_scrollview: ^4.1.1
|
||||
|
||||
Loading…
Reference in New Issue
Block a user