This commit is contained in:
Hamza-Ayed
2025-08-06 01:10:52 +03:00
parent 57b7574657
commit 441385069c
49 changed files with 2577 additions and 1822 deletions

View File

@@ -0,0 +1,13 @@
arguments=
auto.sync=false
build.scans.enabled=false
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
connection.project.dir=
eclipse.preferences.version=1
gradle.user.home=
java.home=
jvm.arguments=
offline.mode=false
override.workspace.settings=false
show.console.view=false
show.executions.view=false

View File

@@ -2,28 +2,28 @@ C/C++ Structured Log

}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/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  Ù¼ŽÞþ2  ÿÊü××2~
|
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build.json  Šÿ<EFBFBD>³ý2ù
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build.json  Ù¼ŽÞþ2ù
˜Ëü××2„
<EFBFBD>
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build_mini.json  Šÿ<EFBFBD>³ý2» êÐü××2p
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build_mini.json  Ù¼ŽÞþ2» êÐü××2p
n
l/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja  Šÿ<EFBFBD>³ý2⃠†Åü××2t
l/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja  Ù¼ŽÞþ2⃠†Åü××2t
r
p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja.txt  Šÿ<EFBFBD>³ý2y
p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja.txt  Ù¼ŽÞþ2y
w
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build_file_index.txt  Šÿ<EFBFBD>³ý2
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build_file_index.txt  Ù¼ŽÞþ2
^ €<>àÕ×2z
x
x
v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/compile_commands.json  Ù¼ŽÞþ2« „Åü××2~
|
|
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/compile_commands.json.bin  Ù¼ŽÞþ2 Æ „Åü××2†
ƒ
ƒ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/metadata_generation_command.txt  Ù¼ŽÞþ2
Š €<>àÕ×2w
u
u
s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/prefab_config.json  Ù¼ŽÞþ2
 ( €<>àÕ×2|
 ( €<>àÕ×2|
z
x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/symbol_folder_index.txt  Šÿ<EFBFBD>³ý2
x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/symbol_folder_index.txt  Ù¼ŽÞþ2

View File

@@ -2,27 +2,27 @@ C/C++ Structured Log
<EFBFBD>
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/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>¾ŽÞþ2  éòü××2€
~
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build.json  ­ÿ<EFBFBD>³ý2<18> ïòü××2‡
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build.json  <EFBFBD>¾ŽÞþ2<18> ïòü××2‡

<EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build_mini.json  ­ÿ<EFBFBD>³ý2Ã ùòü××2r
<EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build_mini.json  <EFBFBD>¾ŽÞþ2à ùòü××2r
p
n/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja  ­ÿ<EFBFBD>³ý2¨„ ¯òü××2v
n/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja  <EFBFBD>¾ŽÞþ2¨„ ¯òü××2v
t
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja.txt  ­ÿ<EFBFBD>³ý2{
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja.txt  <EFBFBD>¾ŽÞþ2{
y
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build_file_index.txt  ­ÿ<EFBFBD>³ý2
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build_file_index.txt  <EFBFBD>¾ŽÞþ2
^ “¤àÕ×2|
z
z
x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json  <08>¾ŽÞþ2Æ ®òü××2€
~
~
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json.bin  <08>¾ŽÞþ2 ï ®òü××2ˆ


/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/metadata_generation_command.txt  <08>¾ŽÞþ2
” “¤àÕ×2y
w
w
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/prefab_config.json  <08>¾ŽÞþ2
 ( “¤àÕ×2~
 ( “¤àÕ×2~
|
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/symbol_folder_index.txt  ­ÿ<EFBFBD>³ý2
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/symbol_folder_index.txt  <EFBFBD>¾ŽÞþ2

View File

@@ -2,28 +2,28 @@ C/C++ Structured Log{
y
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ãÿ<EFBFBD>³ý2  þÿü××2x
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ľŽÞþ2  þÿü××2x
v
t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build.json  Ãÿ<EFBFBD>³ý2á
t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build.json  ľŽÞþ2á
€ý××2}
{
y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build_mini.json  Ãÿ<EFBFBD>³ý2£ †€ý××2j
y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build_mini.json  ľŽÞþ2£ †€ý××2j
h
f/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja  Ãÿ<EFBFBD>³ý2²ƒ Üÿü××2n
f/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja  ľŽÞþ2²ƒ Üÿü××2n
l
j/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja.txt  Ãÿ<EFBFBD>³ý2s
j/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja.txt  ľŽÞþ2s
q
o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build_file_index.txt  Ãÿ<EFBFBD>³ý2
o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build_file_index.txt  ľŽÞþ2
^ ªÕàÕ×2t
r
r
p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/compile_commands.json  ľŽÞþ2± Ûÿü××2x
v
v
t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/compile_commands.json.bin  ľŽÞþ2 Ó Ûÿü××2~
|
|
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/metadata_generation_command.txt  ľŽÞþ2
ì ©ÕàÕ×2q
o
o
m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/prefab_config.json  ľŽÞþ2
 ( ©ÕàÕ×2v
 ( ©ÕàÕ×2v
t
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/symbol_folder_index.txt  Äÿ<EFBFBD>³ý2
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/symbol_folder_index.txt  ľŽÞþ2

View File

@@ -2,28 +2,28 @@ C/C++ Structured Log~
|
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/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  ü¾ŽÞþ2  ûŠý××2{
y
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build.json  Öÿ<EFBFBD>³ý2í
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build.json  ü¾ŽÞþ2í
ýŠý××2€
~
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build_mini.json  Öÿ<EFBFBD>³ý2¯ý××2m
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build_mini.json  ü¾ŽÞþ2¯ý××2m
k
i/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja  Öÿ<EFBFBD>³ý2¼ƒ çŠý××2q
i/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja  ü¾ŽÞþ2¼ƒ çŠý××2q
o
m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja.txt  Öÿ<EFBFBD>³ý2v
m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja.txt  ü¾ŽÞþ2v
t
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build_file_index.txt  Öÿ<EFBFBD>³ý2
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build_file_index.txt  ü¾ŽÞþ2
^ ŒààÕ×2w
u
u
s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json  ü¾ŽÞþ2§ çŠý××2{
y
y
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json.bin  ü¾ŽÞþ2  çŠý××2<C397>


}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/metadata_generation_command.txt  ü¾ŽÞþ2
û ŒààÕ×2t
r
r
p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/prefab_config.json  ü¾ŽÞþ2
 ( ŒààÕ×2y
 ( ŒààÕ×2y
w
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/symbol_folder_index.txt  Öÿ<EFBFBD>³ý2
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/symbol_folder_index.txt  ü¾ŽÞþ2

View File

@@ -2,27 +2,27 @@ C/C++ Structured Log

/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ô”€çù2  Œ¥âÁÜ2‰
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¶Áƒ¶ý2  Œ¥âÁÜ2‰

ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/android_gradle_build.json  Ô”€çù2 ¶¥âÁÜ2Ž
ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/android_gradle_build.json  ¶Áƒ¶ý2 ¶¥âÁÜ2Ž

ˆ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/android_gradle_build_mini.json  Ô”€çù2Ö ¨âÁÜ2y
ˆ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/android_gradle_build_mini.json  ¶Áƒ¶ý2Ö ¨âÁÜ2y
w
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build.ninja  Ô”€çù2÷„ ü¢âÁÜ2}
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build.ninja  ¶Áƒ¶ý2÷„ ü¢âÁÜ2}
{
y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build.ninja.txt  Ô”€çù2ƒ
y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build.ninja.txt  ·Áƒ¶ý2ƒ

~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build_file_index.txt  Ô”€çù2
~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build_file_index.txt  ·Áƒ¶ý2
^ àòíÕ×2„
<EFBFBD>
<EFBFBD>
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/compile_commands.json  ·Áƒ¶ý2­ ü¢âÁÜ2‰


ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/compile_commands.json.bin  ·Áƒ¶ý2 Ñ ü¢âÁÜ2<C39C>
Œ
Œ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/metadata_generation_command.txt  ·Áƒ¶ý2
® ßòíÕ×2€
~
~
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/prefab_config.json  ·Áƒ¶ý2
 ( ßòíÕ×2‡
 ( ßòíÕ×2‡

<EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/symbol_folder_index.txt  Ô”€çù2
<EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/symbol_folder_index.txt  ·Áƒ¶ý2

View File

@@ -2,27 +2,27 @@ C/C++ Structured Log

ˆ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ö€çù2  ¶£ãÁÜ2
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  í̓¶ý2  ¶£ãÁÜ2
ˆ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/android_gradle_build.json  Ö€çù2œ ߣãÁÜ2<C39C>
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/android_gradle_build.json  í̓¶ý2œ ߣãÁÜ2<C39C>
<EFBFBD>
Š/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/android_gradle_build_mini.json  Ö€çù2Þ ФãÁÜ2{
Š/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/android_gradle_build_mini.json  í̓¶ý2Þ ФãÁÜ2{
y
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build.ninja  Ö€çù2½… Ò¢ãÁÜ2
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build.ninja  í̓¶ý2½… Ò¢ãÁÜ2
}
{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build.ninja.txt  Ö€çù2
{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build.ninja.txt  í̓¶ý2
ƒ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build_file_index.txt  Ö€çù2
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build_file_index.txt  í̓¶ý2
^ ãŽîÕ×2‡


<EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/compile_commands.json  í̓¶ý2È Å¢ãÁÜ2
ˆ
ˆ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/compile_commands.json.bin  í̓¶ý2 ú Å¢ãÁÜ2
Ž
Ž
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/metadata_generation_command.txt  í̓¶ý2
¸ âŽîÕ×


~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/prefab_config.json  í̓¶ý2
 ( âŽîÕ×2‰
 ( âŽîÕ×2‰

ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/symbol_folder_index.txt  Ö€çù2
ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/symbol_folder_index.txt  í̓¶ý2

View File

@@ -2,28 +2,28 @@ C/C++ Structured Log
ƒ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ô–€çù2  ÒÒãÁÜ2<C39C>
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ýЃ¶ý2  ÒÒãÁÜ2<C39C>

}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/android_gradle_build.json  ô–€çù2ü
}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/android_gradle_build.json  ýЃ¶ý2ü
ÓãÁÜ2ˆ

/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/android_gradle_build_mini.json  ô–€çù2¾ °ÓãÁÜ2s
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/android_gradle_build_mini.json  ýЃ¶ý2¾ °ÓãÁÜ2s
q
o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build.ninja  ô–€çù2Ç„ ¦ËãÁÜ2w
o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build.ninja  ýЃ¶ý2Ç„ ¦ËãÁÜ2w
u
s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build.ninja.txt  ô–€çù2|
s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build.ninja.txt  ýЃ¶ý2|
z
x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build_file_index.txt  ô–€çù2
x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build_file_index.txt  ýЃ¶ý2
^ ¥«îÕ×2}
{
{
y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/compile_commands.json  ýЃ¶ý2³ ¢ËãÁÜ2<C39C>


}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/compile_commands.json.bin  ýЃ¶ý2 Þ ¢ËãÁÜ2‰


ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/metadata_generation_command.txt  ýЃ¶ý2
<18> ¤«îÕ×2z
x
x
v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/prefab_config.json  ýЃ¶ý2
 ( ¥«îÕ×2
 ( ¥«îÕ×2
}
{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/symbol_folder_index.txt  ô–€çù2
{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/symbol_folder_index.txt  ýЃ¶ý2

View File

@@ -2,27 +2,27 @@ C/C++ Structured Log

ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¡—€çù2  ýþãÁÜ2†
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  èÒƒ¶ý2  ýþãÁÜ2†
ƒ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/android_gradle_build.json  ¡—€çù2ˆ ÀÿãÁÜ2
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/android_gradle_build.json  èÒƒ¶ý2ˆ ÀÿãÁÜ2
ˆ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/android_gradle_build_mini.json  ¡—€çù2Ê ¤€äÁÜ2v
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/android_gradle_build_mini.json  èÒƒ¶ý2Ê ¤€äÁÜ2v
t
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build.ninja  ¡—€çù2Ñ„ éüãÁÜ2z
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build.ninja  èÒƒ¶ý2Ñ„ éüãÁÜ2z
x
v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build.ninja.txt  ¡—€çù2
v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build.ninja.txt  èÒƒ¶ý2
}
{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build_file_index.txt  ¡—€çù2
{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build_file_index.txt  èÒƒ¶ý2
^ ÕÕîÕ×2€
~
~
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/compile_commands.json  èÒƒ¶ý2© éüãÁÜ2†
ƒ
ƒ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/compile_commands.json.bin  èÒƒ¶ý2 Í éüãÁÜ2Œ


/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/metadata_generation_command.txt  èÒƒ¶ý2
Ÿ ÓÕîÕ×2}
{
{
y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/prefab_config.json  éÒƒ¶ý2
 ( ÔÕîÕ×
 ( ÔÕîÕ×

~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/symbol_folder_index.txt  ¡—€çù2
~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/symbol_folder_index.txt  éÒƒ¶ý2

View File

@@ -1,3 +1,8 @@
plugins {
id "com.android.application"
id "org.jetbrains.kotlin.android"
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
@@ -7,45 +12,58 @@ if (localPropertiesFile.exists()) {
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '12'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.1.2'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
// apply plugin: 'com.google.gms.google-services'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystorePropertiesFile.withReader("UTF-8") { reader ->
keystoreProperties.load(reader)
}
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode') ?: '12'
def flutterVersionName = localProperties.getProperty('flutter.versionName') ?: '1.1.2'
android {
namespace "com.sefer_driver"
compileSdk 35
// ndkVersion "27.0.12077973"//28.0.13004108
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
version "3.31.5" // Match cmake_minimum_required in CMakeLists.txt
version "3.31.5"
}
}
defaultConfig {
applicationId "com.sefer_driver"
minSdk 23
targetSdk 35
versionCode 149
versionName '2.0.149'
multiDexEnabled true
ndk {
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" // Keep these!
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
}
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
@@ -56,47 +74,12 @@ android {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.sefer_driver"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdk = 23
targetSdk = flutter.targetSdkVersion
versionCode = 144
versionName = '2.0.144'
multiDexEnabled =true
}
sourceSets {
main {
java.srcDirs += 'src/main/kotlin'
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
flutter {
@@ -109,5 +92,4 @@ dependencies {
implementation 'com.stripe:paymentsheet:20.52.2'
implementation 'com.google.android.gms:play-services-safetynet:18.0.1'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.4'
}
}

View File

@@ -1,5 +1,6 @@
buildscript {
ext.kotlin_version = '1.9.22'
ext.kotlin_version = '1.9.23'
repositories {
google()
mavenCentral()
@@ -7,9 +8,12 @@ buildscript {
dependencies {
// START: FlutterFire Configuration
classpath 'com.google.gms:google-services:4.4.2'
// classpath 'com.google.gms:google-services:4.4.2'
// // END: FlutterFire Configuration
// classpath 'com.android.tools.build:gradle:7.3.1'
classpath 'com.google.gms:google-services:4.3.15'
// END: FlutterFire Configuration
classpath 'com.android.tools.build:gradle:8.8.0'
classpath 'com.android.tools.build:gradle:8.11.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
#Thu Aug 03 17:06:53 EET 2023
distributionBase=GRADLE_USER_HOME
# distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip

View File

@@ -1,11 +1,26 @@
include ':app'
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}()
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.11.0" apply false
id "org.jetbrains.kotlin.android" version "2.0.0" apply false
id "com.google.gms.google-services" version "4.3.10" apply false // فقط إن كنت تستخدم Firebase
}
include ":app"

View File

@@ -5,50 +5,50 @@ packages:
dependency: transitive
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
url: "https://pub.dev"
source: hosted
version: "2.11.0"
version: "2.13.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "2.1.2"
characters:
dependency: transitive
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.0"
clock:
dependency: transitive
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.1.2"
collection:
dependency: transitive
description:
name: collection
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
source: hosted
version: "1.19.0"
version: "1.19.1"
fake_async:
dependency: transitive
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
version: "1.3.3"
flutter:
dependency: "direct main"
description: flutter
@@ -63,18 +63,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
url: "https://pub.dev"
source: hosted
version: "10.0.7"
version: "10.0.9"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
url: "https://pub.dev"
source: hosted
version: "3.0.8"
version: "3.0.9"
leak_tracker_testing:
dependency: transitive
description:
@@ -87,10 +87,10 @@ packages:
dependency: transitive
description:
name: matcher
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
url: "https://pub.dev"
source: hosted
version: "0.12.16+1"
version: "0.12.17"
material_color_utilities:
dependency: transitive
description:
@@ -103,18 +103,18 @@ packages:
dependency: transitive
description:
name: meta
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
url: "https://pub.dev"
source: hosted
version: "1.15.0"
version: "1.16.0"
path:
dependency: transitive
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.9.1"
sky_engine:
dependency: transitive
description: flutter
@@ -124,50 +124,50 @@ packages:
dependency: transitive
description:
name: source_span
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.10.1"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.12.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.4"
string_scanner:
dependency: transitive
description:
name: string_scanner
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.1"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "1.2.2"
test_api:
dependency: transitive
description:
name: test_api
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
url: "https://pub.dev"
source: hosted
version: "0.7.3"
version: "0.7.4"
vector_math:
dependency: transitive
description:
@@ -180,10 +180,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
url: "https://pub.dev"
source: hosted
version: "14.3.0"
version: "15.0.0"
sdks:
dart: ">=3.4.0 <4.0.0"
dart: ">=3.7.0-0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"

View File

@@ -35,7 +35,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>108</string>
<string>109</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
@@ -50,7 +50,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>5.0.108</string>
<string>5.0.109</string>
<key>FirebaseAppDelegateProxyEnabled</key>
<string>NO</string>
<key>GMSApiKey</key>

View File

@@ -12,7 +12,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_contacts/contact.dart';
import 'package:flutter_contacts/flutter_contacts.dart';
import 'package:get/get.dart';
import 'package:share/share.dart';
import 'package:share_plus/share_plus.dart';
import '../../../main.dart';
import '../../../views/widgets/error_snakbar.dart';

View File

@@ -4,6 +4,7 @@ import 'package:crypto/crypto.dart';
import 'dart:math';
import 'package:http/http.dart' as http;
import 'package:permission_handler/permission_handler.dart';
import 'package:secure_string_operations/secure_string_operations.dart';
import 'package:sefer_driver/controller/functions/location_background_controller.dart';
import 'package:sefer_driver/views/auth/captin/cards/sms_signup.dart';
@@ -49,6 +50,42 @@ class LoginDriverController extends GetxController {
update();
}
bool showManualForm = false;
bool isRegisterMode = false; // false = Login, true = Register
/// تبديل عرض نموذج الدخول/التسجيل اليدوي
void toggleManualFormView() {
showManualForm = !showManualForm;
// مسح الحقول عند إغلاق النموذج
if (!showManualForm) {
emailController.clear();
passwordController.clear();
}
update();
}
/// تبديل بين وضع تسجيل الدخول ووضع إنشاء حساب جديد
void toggleRegisterMode() {
isRegisterMode = !isRegisterMode;
update();
}
bool isRegistering = false;
void toggleRegistration() {
isRegistering = !isRegistering;
update();
}
bool isPasswordHidden = true;
void togglePasswordVisibility() {
isPasswordHidden = !isPasswordHidden;
update([
'passwordVisibility'
]); // Use a unique ID to only update the password field
}
void changeGoogleDashOpen() {
isGoogleDashOpen = !isGoogleDashOpen;
update();
@@ -195,8 +232,10 @@ class LoginDriverController extends GetxController {
}
Future<void> getLocationPermission() async {
Get.put(LocationBackgroundController()).requestLocationPermission();
var status = await Permission.locationAlways.status;
if (!status.isGranted) {
await Permission.locationAlways.request();
}
update();
}
@@ -229,9 +268,10 @@ class LoginDriverController extends GetxController {
loginWithGoogleCredential(String driverID, email) async {
isloading = true;
update();
await SecurityHelper.performSecurityChecks();
// await SecurityHelper.performSecurityChecks();
Log.print('(BoxName.emailDriver): ${box.read(BoxName.emailDriver)}');
Log.print('email: ${email}');
Log.print('driverID: ${driverID}');
var res = await CRUD().get(link: AppLink.loginFromGoogleCaptin, payload: {
'email': email,
'id': driverID,
@@ -312,10 +352,14 @@ class LoginDriverController extends GetxController {
key: BoxName.fingerPrint, value: fingerPrint.toString());
if (token != 'failure') {
Log.print(
'box.read(BoxName.tokenDriver): ${box.read(BoxName.tokenDriver)}');
Log.print(
' (jsonDecode(token): ${(jsonDecode(token)['data'][0]['token']).toString()}');
if ((jsonDecode(token)['data'][0]['token']) !=
(box.read(BoxName.tokenDriver))) {
Get.put(FirebaseMessagesController()).sendNotificationToDriverMAP(
'token change'.tr,
'token change',
'change device'.tr,
(jsonDecode(token)['data'][0]['token']).toString(),
[],
@@ -342,14 +386,7 @@ class LoginDriverController extends GetxController {
(box.read(BoxName.driverID)).toString(),
'fingerPrint': (fingerPrint).toString()
});
// await CRUD().post(
// link:
// "${AppLink.seferGizaServer}/ride/firebase/addDriver.php",
// payload: {
// 'token': box.read(BoxName.tokenDriver),
// 'captain_id':
// box.read(BoxName.driverID).toString()
// });
Get.back();
}));
}
@@ -374,7 +411,7 @@ class LoginDriverController extends GetxController {
loginUsingCredentialsWithoutGoogle(String password, email) async {
isloading = true;
isGoogleLogin = true;
update();
// update();
var res = await CRUD()
.get(link: AppLink.loginUsingCredentialsWithoutGoogle, payload: {
'email': (email),

View File

@@ -71,7 +71,7 @@ class FirebaseMessagesController extends GetxController {
Future getToken() async {
fcmToken.getToken().then((token) {
// Log.print('token: ${token}');
Log.print('token: ${token}');
box.write(BoxName.tokenDriver, (token!));
});
@@ -98,7 +98,7 @@ class FirebaseMessagesController extends GetxController {
}
Future<void> fireBaseTitles(RemoteMessage message) async {
if (message.notification!.title! == 'Order'.tr) {
if (message.notification!.title! == 'Order') {
if (Platform.isAndroid) {
notificationController.showNotification(
message.notification!.title.toString(),

View File

@@ -0,0 +1,39 @@
import 'package:battery_plus/battery_plus.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class BatteryNotifier {
static final Battery _battery = Battery();
static int? _lastNotifiedLevel;
static Future<void> checkBatteryAndNotify() async {
try {
final int batteryLevel = await _battery.batteryLevel;
// ✅ لا تكرر الإشعار إذا الفرق قليل
if (_lastNotifiedLevel != null &&
(batteryLevel >= _lastNotifiedLevel! - 2)) return;
if (batteryLevel <= 30) {
Color backgroundColor = Colors.yellow;
if (batteryLevel <= 20) {
backgroundColor = Colors.red;
}
Get.snackbar(
"⚠️ تنبيه البطارية", // العنوان
"مستوى البطارية: $batteryLevel٪", // النص
snackPosition: SnackPosition.TOP,
backgroundColor: backgroundColor,
colorText: Colors.white,
duration: const Duration(seconds: 10), // مدة الظهور
margin: const EdgeInsets.all(10),
);
_lastNotifiedLevel = batteryLevel;
}
} catch (e) {
print('Battery check error: $e');
}
}
}

View File

@@ -0,0 +1,206 @@
import 'dart:async';
import 'dart:io';
import 'package:device_info_plus/device_info_plus.dart';
import 'performance_test.dart';
/// Analyzes various device hardware and software aspects to generate a compatibility score.
/// This class provides a standardized output for the UI to consume easily.
class DeviceAnalyzer {
final DeviceInfoPlugin _deviceInfo = DeviceInfoPlugin();
/// Reads the total RAM from the system's meminfo file.
/// Returns the value in Megabytes (MB).
Future<double> _readTotalRamMB() async {
try {
final file = File('/proc/meminfo');
if (!await file.exists()) return 0.0;
final lines = await file.readAsLines();
for (var line in lines) {
if (line.startsWith('MemTotal')) {
// Extracts the numeric value from the line.
final kb = int.tryParse(RegExp(r'\d+').stringMatch(line) ?? '0') ?? 0;
return kb / 1024.0; // Convert from Kilobytes to Megabytes
}
}
} catch (e) {
print('❌ Error reading total RAM: $e');
}
return 0.0;
}
/// Reads the current RAM usage percentage from the system's meminfo file.
Future<double> _readUsedRamPercent() async {
try {
final file = File('/proc/meminfo');
if (!await file.exists()) return 0.0;
final lines = await file.readAsLines();
int? total, available;
for (var line in lines) {
if (line.startsWith('MemTotal')) {
total = int.tryParse(RegExp(r'\d+').stringMatch(line) ?? '');
} else if (line.startsWith('MemAvailable')) {
available = int.tryParse(RegExp(r'\d+').stringMatch(line) ?? '');
}
}
if (total != null && available != null && total > 0) {
final used = total - available;
return (used / total) * 100.0;
}
} catch (e) {
print('❌ Error reading used RAM: $e');
}
return 0.0;
}
/// The main analysis function that runs all checks.
Future<Map<String, dynamic>> analyzeDevice() async {
List<Map<String, dynamic>> details = [];
if (!Platform.isAndroid) {
return {
'score': 0,
'details': [
{
'label': 'النظام غير مدعوم',
'status': false,
'achieved_score': 0,
'max_score': 100
}
]
};
}
final info = await _deviceInfo.androidInfo;
final data = info.data;
final features = List<String>.from(data['systemFeatures'] ?? []);
// 1. Android Version (Max: 10 points)
final version =
int.tryParse(info.version.release?.split('.').first ?? '0') ?? 0;
final int androidScore = version >= 9 ? 10 : 0;
details.add({
'label': 'إصدار أندرويد ${info.version.release}',
'status': androidScore > 0,
'achieved_score': androidScore,
'max_score': 10,
});
// 2. Total RAM (Max: 10 points)
final totalRam = await _readTotalRamMB();
int ramScore;
if (totalRam >= 8000) {
ramScore = 10;
} else if (totalRam >= 4000) {
ramScore = 5;
} else if (totalRam >= 3000) {
ramScore = 3;
} else {
ramScore = 0;
}
details.add({
'label': 'إجمالي الرام ${totalRam.toStringAsFixed(0)} ميجابايت',
'status': ramScore >= 5,
'achieved_score': ramScore,
'max_score': 10,
});
// 3. CPU Cores (Max: 10 points)
final cores = Platform.numberOfProcessors;
int coreScore = cores >= 6 ? 10 : (cores >= 4 ? 5 : 0);
details.add({
'label': 'أنوية المعالج ($cores)',
'status': coreScore >= 5,
'achieved_score': coreScore,
'max_score': 10,
});
// 4. Free Storage (Max: 5 points)
final freeBytes = data['freeDiskSize'] ?? 0;
final freeGB = freeBytes / (1024 * 1024 * 1024);
int storeScore = freeGB >= 5 ? 5 : (freeGB >= 2 ? 3 : 0);
details.add({
'label': 'المساحة الحرة ${freeGB.toStringAsFixed(1)} جيجابايت',
'status': storeScore >= 3,
'achieved_score': storeScore,
'max_score': 5,
});
// 5. GPS + Gyroscope Sensors (Max: 10 points)
bool okSensors = features.contains('android.hardware.location.gps') &&
features.contains('android.hardware.sensor.gyroscope');
final int sensorScore = okSensors ? 10 : 0;
details.add({
'label': 'حساسات GPS و Gyroscope',
'status': okSensors,
'achieved_score': sensorScore,
'max_score': 10,
});
// 6. Storage Write Speed (Max: 20 points)
final writeSpeed = await PerformanceTester.testStorageWriteSpeed();
int writeScore;
if (writeSpeed >= 30) {
writeScore = 20;
} else if (writeSpeed >= 15) {
writeScore = 15;
} else if (writeSpeed >= 5) {
writeScore = 10;
} else {
writeScore = 5;
}
details.add({
'label': 'سرعة الكتابة (${writeSpeed.toStringAsFixed(1)} MB/s)',
'status': writeScore >= 10,
'achieved_score': writeScore,
'max_score': 20,
});
// 7. CPU Compute Speed (Max: 20 points)
final cpuTime = await PerformanceTester.testCPUSpeed();
int cpuScore;
if (cpuTime <= 1.0) {
cpuScore = 20;
} else if (cpuTime <= 2.5) {
cpuScore = 15;
} else if (cpuTime <= 4.0) {
cpuScore = 10;
} else {
cpuScore = 5;
}
details.add({
'label': 'سرعة المعالجة (${cpuTime.toStringAsFixed(2)} ثانية)',
'status': cpuScore >= 10,
'achieved_score': cpuScore,
'max_score': 20,
});
// 8. Memory Pressure (Max: 15 points)
final usedPercent = await _readUsedRamPercent();
int memScore;
if (usedPercent <= 60) {
memScore = 15;
} else if (usedPercent <= 80) {
memScore = 10;
} else if (usedPercent <= 90) {
memScore = 5;
} else {
memScore = 0;
}
details.add({
'label': 'استخدام الرام الحالي (${usedPercent.toStringAsFixed(0)}%)',
'status': memScore >= 10,
'achieved_score': memScore,
'max_score': 15,
});
// Calculate the final total score by summing up the achieved scores.
final totalScore = details.fold<int>(
0, (sum, item) => sum + (item['achieved_score'] as int));
return {
'score': totalScore.clamp(0, 100),
'details': details,
};
}
}

View File

@@ -1,54 +1,54 @@
import 'dart:async';
import 'package:background_location/background_location.dart';
import 'package:get/get.dart';
import 'package:permission_handler/permission_handler.dart';
// import 'dart:async';
// import 'package:background_location/background_location.dart';
// import 'package:get/get.dart';
// import 'package:permission_handler/permission_handler.dart';
class LocationBackgroundController extends GetxController {
@override
void onInit() {
super.onInit();
requestLocationPermission();
configureBackgroundLocation();
}
// class LocationBackgroundController extends GetxController {
// @override
// void onInit() {
// super.onInit();
// requestLocationPermission();
// configureBackgroundLocation();
// }
Future<void> requestLocationPermission() async {
var status = await Permission.locationAlways.status;
if (!status.isGranted) {
await Permission.locationAlways.request();
}
}
// Future<void> requestLocationPermission() async {
// var status = await Permission.locationAlways.status;
// if (!status.isGranted) {
// await Permission.locationAlways.request();
// }
// }
Future<void> configureBackgroundLocation() async {
await BackgroundLocation.setAndroidNotification(
title: 'Location Tracking Active'.tr,
message: 'Your location is being tracked in the background.'.tr,
icon: '@mipmap/launcher_icon',
);
// Future<void> configureBackgroundLocation() async {
// await BackgroundLocation.setAndroidNotification(
// title: 'Location Tracking Active'.tr,
// message: 'Your location is being tracked in the background.'.tr,
// icon: '@mipmap/launcher_icon',
// );
BackgroundLocation.setAndroidConfiguration(3000);
BackgroundLocation.startLocationService();
BackgroundLocation.getLocationUpdates((location) {
// Handle location updates here
});
}
// BackgroundLocation.setAndroidConfiguration(3000);
// BackgroundLocation.startLocationService();
// BackgroundLocation.getLocationUpdates((location) {
// // Handle location updates here
// });
// }
startBackLocation() async {
Timer.periodic(const Duration(seconds: 3), (timer) {
getBackgroundLocation();
});
}
// startBackLocation() async {
// Timer.periodic(const Duration(seconds: 3), (timer) {
// getBackgroundLocation();
// });
// }
getBackgroundLocation() async {
var status = await Permission.locationAlways.status;
if (status.isGranted) {
await BackgroundLocation.startLocationService(
distanceFilter: 20, forceAndroidLocationManager: true);
BackgroundLocation.setAndroidConfiguration(
Duration.microsecondsPerSecond); // Set interval to 5 seconds
// getBackgroundLocation() async {
// var status = await Permission.locationAlways.status;
// if (status.isGranted) {
// await BackgroundLocation.startLocationService(
// distanceFilter: 20, forceAndroidLocationManager: true);
// BackgroundLocation.setAndroidConfiguration(
// Duration.microsecondsPerSecond); // Set interval to 5 seconds
BackgroundLocation.getLocationUpdates((location1) {});
} else {
await Permission.locationAlways.request();
}
}
}
// BackgroundLocation.getLocationUpdates((location1) {});
// } else {
// await Permission.locationAlways.request();
// }
// }
// }

View File

@@ -12,6 +12,7 @@ import '../../main.dart';
import '../../print.dart';
import '../home/captin/home_captain_controller.dart';
import '../home/payment/captain_wallet_controller.dart';
import 'battery_status.dart';
import 'crud.dart';
import 'encrypt_decrypt.dart';
@@ -40,6 +41,7 @@ class LocationController extends GetxController {
location = Location();
await location.changeSettings(
accuracy: LocationAccuracy.high, interval: 5000, distanceFilter: 0);
await location.enableBackgroundMode(enable: true);
await getLocation();
await startLocationUpdates();
@@ -82,6 +84,7 @@ class LocationController extends GetxController {
_locationTimer =
Timer.periodic(const Duration(seconds: 5), (timer) async {
try {
await BatteryNotifier.checkBatteryAndNotify();
totalPoints =
Get.find<CaptainWalletController>().totalPoints.toString();
isActive = Get.find<HomeCaptainController>().isActive;

View File

@@ -0,0 +1,43 @@
import 'dart:io';
class PerformanceTester {
/// ✅ فحص سرعة الكتابة إلى التخزين (Storage Write Speed) بوحدة MB/s
static Future<double> testStorageWriteSpeed() async {
try {
final tempDir = Directory.systemTemp;
final testFile = File('${tempDir.path}/speed_test.txt');
final data = List<int>.filled(1024 * 1024 * 5, 0); // 5MB
final stopwatch = Stopwatch()..start();
await testFile.writeAsBytes(data, flush: true);
stopwatch.stop();
await testFile.delete();
double seconds = stopwatch.elapsedMilliseconds / 1000;
if (seconds == 0) seconds = 0.001;
final speed = 5 / seconds;
return double.parse(speed.toStringAsFixed(2));
} catch (e) {
print("❌ Storage write error: $e");
return 0.0;
}
}
/// ✅ فحص سرعة المعالج (CPU Compute Speed) بوحدة الثواني
static Future<double> testCPUSpeed() async {
try {
final stopwatch = Stopwatch()..start();
double x = 0;
for (int i = 0; i < 100000000; i++) {
x += i * 0.000001;
}
stopwatch.stop();
return stopwatch.elapsedMilliseconds / 1000.0;
} catch (e) {
print("❌ CPU compute error: $e");
return 999.0;
}
}
}

View File

@@ -54,7 +54,7 @@ class HomeCaptainController extends GetxController {
double widthMapTypeAndTraffic = 50;
// Inject the LocationController class
final locationController = Get.put(LocationController());
final locationBackController = Get.put(LocationBackgroundController());
// final locationBackController = Get.put(LocationBackgroundController());
String formatDuration(Duration duration) {
String twoDigits(int n) => n.toString().padLeft(2, "0");
String twoDigitMinutes = twoDigits(duration.inMinutes.remainder(60));

View File

@@ -65,7 +65,44 @@ class MyTranslation extends Translations {
"Order Applied": "تم تطبيق الطلب",
//firebase above
"Driver Portal": "بوابة السائق",
"Sign in to start your journey": "سجّل الدخول لبدء رحلتك",
"Sign in with a provider for easy access":
"سجّل الدخول عبر أحد المزودين للوصول بسهولة",
"Sign In with Google": "تسجيل الدخول باستخدام جوجل",
"Sign in with Apple": "تسجيل الدخول باستخدام آبل",
"Or": "أو",
'Is device compatible': 'هل الجهاز متوافق',
"Create Account with Email": "إنشاء حساب بالبريد الإلكتروني",
"Need help? Contact Us": "هل تحتاج للمساعدة؟ تواصل معنا",
"Create Driver Account": "إنشاء حساب سائق",
"Driver Login": "تسجيل دخول السائق",
"Email": "البريد الإلكتروني",
"Enter your email": "أدخل بريدك الإلكتروني",
"Please enter a valid email": "الرجاء إدخال بريد إلكتروني صالح",
"Password": "كلمة المرور",
"Enter your password": "أدخل كلمة المرور",
"Password must be at least 6 characters":
"يجب أن تتكون كلمة المرور من 6 أحرف على الأقل",
"Create Account": "إنشاء حساب",
"Login": "تسجيل الدخول",
"Back to other sign-in options": "العودة إلى خيارات التسجيل الأخرى",
"Driver Agreement": "اتفاقية السائق",
"To become a driver, you must review and agree to the ":
"لتصبح سائقًا، يجب عليك مراجعة والموافقة على ",
"Terms of Use": "شروط الاستخدام",
" and acknowledge our Privacy Policy.":
" والإقرار بسياسة الخصوصية الخاصة بنا.",
"I Agree": "أنا أوافق",
"Continue": "متابعة",
"Privacy Policy": "سياسة الخصوصية",
"Location Access Required": "مطلوب الوصول إلى الموقع",
"We need access to your location to match you with nearby passengers and provide accurate navigation.":
"نحتاج للوصول إلى موقعك لمطابقتك مع الركاب القريبين وتوفير توجيه دقيق.",
"Please allow location access \"all the time\" to receive ride requests even when the app is in the background.":
"الرجاء السماح بالوصول إلى الموقع \"طوال الوقت\" لاستقبال طلبات الرحلات حتى عندما يكون التطبيق في الخلفية.",
"Allow Location Access": "السماح بالوصول إلى الموقع",
"Open Settings": "فتح الإعدادات",
"payment_success": "تمت العملية بنجاح",
"transaction_id": "رقم العملية",
"amount_paid": "المبلغ المدفوع",

View File

@@ -15,7 +15,7 @@ class DriverWalletHistoryController extends GetxController {
getArchivePayment() async {
isLoading = true;
update();
var res = await CRUD().get(
var res = await CRUD().getWallet(
link: AppLink.getWalletByDriver,
payload: {'driverID': box.read(BoxName.driverID)});
if (res == 'failure') {
@@ -40,7 +40,7 @@ class DriverWalletHistoryController extends GetxController {
getWeekllyArchivePayment() async {
isLoading = true;
update();
var res = await CRUD().get(
var res = await CRUD().getWallet(
link: AppLink.getDriverWeekPaymentMove,
payload: {'driverID': box.read(BoxName.driverID)});
if (res == 'failure') {

View File

@@ -13,7 +13,7 @@ ThemeData lightThemeEnglish = ThemeData(
bodyMedium: AppStyle.subtitle,
),
primarySwatch: Colors.blue,
dialogTheme: DialogTheme(
dialogTheme: DialogThemeData(
backgroundColor: AppColor.secondaryColor,
contentTextStyle: AppStyle.title,
titleTextStyle: AppStyle.headTitle2,
@@ -49,7 +49,7 @@ ThemeData darkThemeEnglish = ThemeData(
bodyMedium: AppStyle.subtitle,
),
primarySwatch: Colors.blue,
dialogTheme: DialogTheme(
dialogTheme: DialogThemeData(
backgroundColor: AppColor.secondaryColor,
contentTextStyle: AppStyle.title,
titleTextStyle: AppStyle.headTitle2,
@@ -85,7 +85,7 @@ ThemeData lightThemeArabic = ThemeData(
bodyMedium: AppStyle.subtitle,
),
primarySwatch: Colors.blue,
dialogTheme: DialogTheme(
dialogTheme: DialogThemeData(
backgroundColor: AppColor.secondaryColor,
contentTextStyle: AppStyle.title,
titleTextStyle: AppStyle.headTitle2,
@@ -121,7 +121,7 @@ ThemeData darkThemeArabic = ThemeData(
bodyMedium: AppStyle.subtitle,
),
primarySwatch: Colors.blue,
dialogTheme: DialogTheme(
dialogTheme: DialogThemeData(
backgroundColor: AppColor.secondaryColor,
contentTextStyle: AppStyle.title,
titleTextStyle: AppStyle.headTitle2,

View File

@@ -170,6 +170,7 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
await FirebaseMessaging.instance.requestPermission();
FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler);
await FirebaseMessagesController().getToken();
await NotificationController().initNotifications();
// You can add your other initializations here

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,248 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:fl_chart/fl_chart.dart';
import '../../../../controller/functions/device_analyzer.dart';
// --- CompatibilityDetailCard Widget (Updated to use 'max_score') ---
class CompatibilityDetailCard extends StatelessWidget {
final Map<String, dynamic> detail;
const CompatibilityDetailCard({super.key, required this.detail});
Color _getStatusColor(bool status, int achieved, int max) {
if (!status) return Colors.red.shade400;
if (achieved < max) return Colors.orange.shade600;
return Colors.teal;
}
IconData _getIconForLabel(String label) {
if (label.contains('رام')) return Icons.memory;
if (label.contains('معالج') || label.contains('CPU')) {
return Icons.developer_board;
}
if (label.contains('تخزين') || label.contains('كتابة')) {
return Icons.sd_storage_outlined;
}
if (label.contains('أندرويد')) return Icons.android;
if (label.contains('خدمات')) return Icons.g_mobiledata;
if (label.contains('حساسات') || label.contains('Gyroscope')) {
return Icons.sensors;
}
return Icons.smartphone;
}
@override
Widget build(BuildContext context) {
final bool status = detail['status'] ?? false;
final String label = detail['label'] ?? "";
final int achievedScore = detail['achieved_score'] ?? 0;
// Corrected to use 'max_score' from the analyzer
final int maxScore = detail['max_score'] ?? 1;
final Color color = _getStatusColor(status, achievedScore, maxScore);
final double progress =
(maxScore > 0) ? (achievedScore / maxScore).clamp(0.0, 1.0) : 0.0;
return Container(
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 7),
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.08),
blurRadius: 15,
offset: const Offset(0, 5),
)
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Icon(_getIconForLabel(label),
color: Colors.grey.shade600, size: 20),
const SizedBox(width: 8),
Expanded(
child: Text(
label,
style: TextStyle(
fontSize: 15,
color: Colors.grey.shade800,
fontWeight: FontWeight.w600),
),
),
// Corrected to display points out of max_score
Text(
"$achievedScore/$maxScore نقطة",
style: TextStyle(
color: color, fontWeight: FontWeight.bold, fontSize: 14),
),
],
),
const SizedBox(height: 12),
LinearProgressIndicator(
value: progress,
backgroundColor: Colors.grey.shade200,
color: color,
minHeight: 6,
borderRadius: BorderRadius.circular(3),
),
],
),
);
}
}
// --- Main Page Widget ---
class DeviceCompatibilityPage extends StatefulWidget {
const DeviceCompatibilityPage({super.key});
@override
State<DeviceCompatibilityPage> createState() =>
_DeviceCompatibilityPageState();
}
class _DeviceCompatibilityPageState extends State<DeviceCompatibilityPage> {
int score = 0;
List<Map<String, dynamic>> details = [];
bool isLoading = true;
@override
void initState() {
super.initState();
_initializePage();
}
Future<void> _initializePage() async {
// await BatteryNotifier.checkBatteryAndNotify();
final result = await DeviceAnalyzer().analyzeDevice();
if (mounted) {
setState(() {
score = result['score'];
details = List<Map<String, dynamic>>.from(result['details']);
isLoading = false;
});
}
}
Color _getColorForScore(int value) {
if (value >= 80) return Colors.teal;
if (value >= 60) return Colors.orange.shade700;
return Colors.red.shade600;
}
String _getScoreMessage(int value) {
if (value >= 80) return "جهازك يقدم أداءً ممتازاً";
if (value >= 60) return "جهازك جيد ومناسب جداً";
if (value >= 40) return "متوافق، قد تلاحظ بعض البطء";
return "قد لا يعمل التطبيق بالشكل الأمثل";
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: const Color(0xFFF7F8FC),
appBar: AppBar(
title: const Text("توافق الجهاز",
style:
TextStyle(color: Colors.black87, fontWeight: FontWeight.bold)),
centerTitle: true,
backgroundColor: Colors.transparent,
elevation: 0,
iconTheme: const IconThemeData(color: Colors.black87),
),
body: isLoading
? const Center(child: CircularProgressIndicator(color: Colors.teal))
: Column(
children: [
_buildScoreHeader(),
Expanded(
child: ListView.builder(
padding: const EdgeInsets.only(top: 10, bottom: 20),
itemCount: details.length,
itemBuilder: (context, i) =>
CompatibilityDetailCard(detail: details[i]),
),
),
Padding(
padding: const EdgeInsets.fromLTRB(16, 8, 16, 24),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.teal,
minimumSize: const Size(double.infinity, 50),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12)),
elevation: 0,
),
onPressed: () => Get.back(),
child: const Text("المتابعة إلى التطبيق",
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold,
color: Colors.white)),
),
),
],
),
);
}
/// ## Corrected Score Header Widget
/// This widget now uses a `Stack` to correctly place the text over the `PieChart`.
Widget _buildScoreHeader() {
return Container(
margin: const EdgeInsets.symmetric(horizontal: 16),
height: 220, // Give the container a fixed height
child: Stack(
alignment: Alignment.center,
children: [
// Layer 1: The Pie Chart
PieChart(
PieChartData(
sectionsSpace: 4,
// This creates the "hole" in the middle.
centerSpaceRadius: 80,
startDegreeOffset: -90,
sections: [
PieChartSectionData(
color: _getColorForScore(score),
value: score.toDouble(),
title: '',
radius: 25,
),
PieChartSectionData(
color: Colors.grey.shade200,
value: (100 - score).toDouble().clamp(0, 100),
title: '',
radius: 25,
),
],
),
),
// Layer 2: The text and message, centered on top of the chart
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"$score%",
style: TextStyle(
fontSize: 52,
fontWeight: FontWeight.bold,
color: _getColorForScore(score)),
),
const SizedBox(height: 4),
Text(
_getScoreMessage(score),
style: TextStyle(
color: Colors.grey.shade700,
fontSize: 16,
fontWeight: FontWeight.w500),
),
],
),
],
),
);
}
}

View File

@@ -1,3 +1,5 @@
import 'dart:io';
import 'package:sefer_driver/constant/links.dart';
import 'package:sefer_driver/constant/style.dart';
import 'package:sefer_driver/controller/home/captin/home_captain_controller.dart';
@@ -25,6 +27,8 @@ import '../assurance_health_page.dart';
import '../maintain_center_page.dart';
import 'package:flutter/cupertino.dart';
import 'device_compatibility_page.dart';
// class CupertinoDrawerCaptain extends StatelessWidget {
// final ImageController imageController = Get.put(ImageController());
@@ -363,10 +367,17 @@ class CupertinoDrawerCaptain extends StatelessWidget {
onTap: () => Get.to(() => RatingScreen()),
),
_buildDrawerItem(
icon: CupertinoIcons.settings_solid,
text: 'Settings'.tr,
onTap: () => Get.to(() => const SettingsCaptain()),
icon: Icons.memory,
text: 'Is device compatible'.tr,
onTap: () => Get.to(() => const DeviceCompatibilityPage()),
),
Platform.isAndroid
? _buildDrawerItem(
icon: CupertinoIcons.settings_solid,
text: 'Settings'.tr,
onTap: () => Get.to(() => const SettingsCaptain()),
)
: SizedBox(),
_buildDrawerItem(
icon: CupertinoIcons.square_arrow_right,
text: 'Sign Out'.tr,

View File

@@ -26,6 +26,86 @@ import 'widget/connect.dart';
import 'widget/left_menu_map_captain.dart';
import '../../../../main.dart';
// =================================================================
// STEP 1: Modify your LocationController
// =================================================================
/*
In your `location_controller.dart` file, change `myLocation` and `heading`
to be observable by adding `.obs`. This will allow other parts of your app,
like the map, to automatically react to changes.
// BEFORE:
// LatLng myLocation = LatLng(....);
// double heading = 0.0;
// AFTER:
final myLocation = const LatLng(30.0444, 31.2357).obs; // Default to Cairo or a sensible default
final heading = 0.0.obs;
// When you update these values elsewhere in your controller,
// make sure to update their `.value` property.
// e.g., myLocation.value = newLatLng;
// e.g., heading.value = newHeading;
*/
// =================================================================
// STEP 2: Modify your HomeCaptainController
// =================================================================
/*
In your `home_captain_controller.dart` file, you need to add logic to
listen for changes from the LocationController and animate the camera.
class HomeCaptainController extends GetxController {
// ... your existing variables (mapController, carIcon, etc.)
// Make sure you have a reference to the GoogleMapController
GoogleMapController? mapHomeCaptainController;
@override
void onInit() {
super.onInit();
_setupLocationListener();
}
void onMapCreated(GoogleMapController controller) {
mapHomeCaptainController = controller;
// Any other map setup logic
}
// THIS IS THE NEW LOGIC TO ADD
void _setupLocationListener() {
final locationController = Get.find<LocationController>();
// The 'ever' worker from GetX listens for changes to an observable variable.
// Whenever `heading` or `myLocation` changes, it will call our method.
ever(locationController.heading, (_) => _updateCameraPosition());
ever(locationController.myLocation, (_) => _updateCameraPosition());
}
void _updateCameraPosition() {
final locationController = Get.find<LocationController>();
if (mapHomeCaptainController != null) {
final newPosition = CameraPosition(
target: locationController.myLocation.value,
zoom: 17.5, // A bit closer for a navigation feel
tilt: 50.0, // A nice 3D perspective
bearing: locationController.heading.value, // This rotates the map
);
// Animate the camera smoothly to the new position and rotation
mapHomeCaptainController!.animateCamera(
CameraUpdate.newCameraPosition(newPosition),
);
}
}
// ... rest of your controller code
}
*/
// =================================================================
// STEP 3: Update the HomeCaptain Widget
// =================================================================
class HomeCaptain extends StatelessWidget {
HomeCaptain({super.key});
final LocationController locationController = Get.put(LocationController());
@@ -34,16 +114,12 @@ class HomeCaptain extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Get.put(OrderRequestController());
Get.put(HomeCaptainController());
// Get.put(CaptainWalletController());
WidgetsBinding.instance.addPostFrameCallback((_) async {
closeOverlayIfFound();
checkForUpdate(context);
getPermissionOverlay();
showDriverGiftClaim(context);
// getPermissionLocation1();
// await showFirstTimeOfferNotification(context);
});
return Scaffold(
appBar: AppBar(
@@ -118,14 +194,18 @@ class HomeCaptain extends StatelessWidget {
onPressed: homeCaptainController.changeMapTraffic,
),
_MapControlButton(
icon: Icons.location_on,
tooltip: 'My Location'.tr,
icon: Icons.my_location, // Changed for clarity
tooltip: 'Center on Me'.tr,
onPressed: () {
homeCaptainController.mapHomeCaptainController!
.animateCamera(CameraUpdate.newLatLng(LatLng(
Get.find<LocationController>().myLocation.latitude,
Get.find<LocationController>().myLocation.longitude,
)));
// This button now just re-centers without changing rotation
if (homeCaptainController.mapHomeCaptainController !=
null) {
homeCaptainController.mapHomeCaptainController!
.animateCamera(CameraUpdate.newLatLngZoom(
Get.find<LocationController>().myLocation,
17.5,
));
}
},
),
],
@@ -134,47 +214,57 @@ class HomeCaptain extends StatelessWidget {
const SizedBox(width: 8),
],
),
drawer:
CupertinoDrawerCaptain(), // Add this widget at the bottom of the file
drawer: CupertinoDrawerCaptain(),
body: Stack(
children: [
GetBuilder<HomeCaptainController>(builder: (homeCaptainController) {
return homeCaptainController.isLoading
// FIX: Replaced nested GetBuilder/Obx with a single GetX widget.
// GetX handles both observable (.obs) variables and standard controller updates.
GetBuilder<HomeCaptainController>(builder: (controller) {
return controller.isLoading
? const MyCircularProgressIndicator()
: GoogleMap(
onMapCreated: homeCaptainController.onMapCreated,
// cameraTargetBounds: CameraTargetBounds(controller.boundsdata),
onMapCreated: controller.onMapCreated,
minMaxZoomPreference: const MinMaxZoomPreference(6, 18),
initialCameraPosition: CameraPosition(
// Use .value to get the latest location from the reactive variable
target: locationController.myLocation,
zoom: 15,
),
onCameraMove: (position) {
CameraPosition(
target: locationController.myLocation,
zoom: 17.5, // A bit closer for a navigation feel
tilt: 50.0, // A nice 3D perspective
bearing:
locationController.heading, // This rotates the map
);
},
markers: {
Marker(
markerId: MarkerId('MyLocation'.tr),
position: locationController.myLocation,
draggable: false,
icon: homeCaptainController.carIcon,
rotation: locationController.heading)
markerId: MarkerId('MyLocation'.tr),
// Use .value for position and rotation from the reactive variable
position: locationController.myLocation,
rotation: locationController.heading,
// IMPORTANT: These two properties make the marker look
// correct when the map is tilted and rotating.
flat: true,
anchor: const Offset(0.5, 0.5),
icon: controller.carIcon,
)
},
mapType: homeCaptainController.mapType
mapType: controller.mapType
? MapType.satellite
: MapType.terrain,
myLocationButtonEnabled: true,
// liteModeEnabled: true, tiltGesturesEnabled: false,
// indoorViewEnabled: true,
trafficEnabled: homeCaptainController.mapTrafficON,
myLocationButtonEnabled: false, // Disable default button
myLocationEnabled: false, // We use our custom marker
trafficEnabled: controller.mapTrafficON,
buildingsEnabled: true,
mapToolbarEnabled: true,
myLocationEnabled: false,
// liteModeEnabled: true,
zoomControlsEnabled: false, // Cleaner UI for navigation
);
}),
// The rest of your UI remains the same...
Positioned(
bottom: 10,
right: Get.width * .1,
@@ -384,45 +474,7 @@ class HomeCaptain extends StatelessWidget {
),
),
),
), // Positioned(
// bottom: Get.height * .17,
// right: Get.width * .01,
// child: AnimatedContainer(
// duration: const Duration(microseconds: 200),
// width: Get.width * .12,
// decoration: BoxDecoration(
// color: AppColor.secondaryColor,
// border: Border.all(),
// borderRadius: BorderRadius.circular(15)),
// child: IconButton(
// onPressed: () async {
// CRUD().sendEmail(AppLink.sendEmailToPassengerForTripDetails, {
// 'startLocation': Get.find<MapDriverController>()
// .passengerLocation
// .toString(),
// 'endLocation': Get.find<MapDriverController>()
// .passengerDestination
// .toString(),
// 'name': Get.find<MapDriverController>().name.toString(),
// 'timeOfTrip':
// Get.find<MapDriverController>().timeOfOrder.toString(),
// 'fee': Get.find<MapDriverController>()
// .totalPassenger
// .toString(),
// 'duration':
// Get.find<MapDriverController>().duration.toString(),
// 'phone': Get.find<MapDriverController>().phone.toString(),
// 'email': Get.find<MapDriverController>().email.toString(),
// });
// },
// icon: const Icon(
// MaterialCommunityIcons.map_marker_radius,
// size: 45,
// color: AppColor.blueColor,
// ),
// ),
// ),
// ),
),
Positioned(
bottom: Get.height * .2,
right: 6,
@@ -438,14 +490,6 @@ class HomeCaptain extends StatelessWidget {
borderRadius: BorderRadius.circular(15)),
child: IconButton(
onPressed: () async {
// final Bubble _bubble = Bubble(showCloseButton: false);
// try {
// await _bubble.startBubbleHead(
// sendAppToBackground: false);
// } on PlatformException {
// print('Failed to call startBubbleHead');
// }
Bubble().startBubbleHead(sendAppToBackground: true);
},
icon: Image.asset(
@@ -483,8 +527,6 @@ class HomeCaptain extends StatelessWidget {
),
GetBuilder<HomeCaptainController>(
builder: (homeCaptainController) {
Log.print(
'rideStatus from home 486 : ${box.read(BoxName.rideStatus)}');
return box.read(BoxName.rideStatus) == 'Applied' ||
box.read(BoxName.rideStatus) == 'Begin'
? Positioned(
@@ -537,27 +579,13 @@ class HomeCaptain extends StatelessWidget {
),
),
leftMainMenuCaptainIcons(),
// callPage(),
// Positioned(
// top: Get.height * .2,
// // left: 20,
// // right: 20,
// bottom: Get.height * .4,
// child: IconButton(
// onPressed: () {
// homeCaptainController.getCountRideToday();
// },
// icon: const Icon(Icons.call),
// ),
// ),
],
),
);
}
}
// These helper widgets and functions remain unchanged
showFirstTimeOfferNotification(BuildContext context) async {
bool isFirstTime = _checkIfFirstTime();

View File

@@ -1,6 +1,7 @@
import 'package:sefer_driver/constant/box_name.dart';
import 'package:sefer_driver/controller/firebase/local_notification.dart';
import 'package:sefer_driver/main.dart';
import 'package:sefer_driver/views/auth/login_page.dart';
import 'package:sefer_driver/views/home/Captin/driver_map_page.dart';
import 'package:sefer_driver/views/home/Captin/orderCaptin/vip_order_page.dart';
import 'package:flutter/material.dart';
@@ -148,6 +149,9 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
// child: Builder(builder: (context) {
// return IconButton(
// onPressed: () async {
// Get.to(
// () => LoginPage(),
// );
// },
// icon: const Icon(
// FontAwesome5.grin_tears,

View File

@@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import '../../../../constant/colors.dart';
import '../../../../controller/functions/location_controller.dart';
import '../../../../controller/home/captin/map_driver_controller.dart';
@@ -36,6 +35,12 @@ class GoogleDriverMap extends StatelessWidget {
cameraTargetBounds:
CameraTargetBounds.unbounded, // Allow unrestricted movement
onCameraMove: (position) {
CameraPosition(
target: locationController.myLocation,
zoom: 13,
bearing: locationController.heading,
tilt: 40,
);
//todo
// locationController.myLocation = position.target;
//

1
linux/.gitignore vendored
View File

@@ -1 +0,0 @@
flutter/ephemeral

View File

@@ -1,139 +0,0 @@
# Project-level configuration.
cmake_minimum_required(VERSION 3.10)
project(runner LANGUAGES CXX)
# The name of the executable created for the application. Change this to change
# the on-disk name of your application.
set(BINARY_NAME "ride")
# The unique GTK application identifier for this application. See:
# https://wiki.gnome.org/HowDoI/ChooseApplicationID
set(APPLICATION_ID "com.mobileapp.store.ride")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake.
cmake_policy(SET CMP0063 NEW)
# Load bundled libraries from the lib/ directory relative to the binary.
set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
# Root filesystem for cross-building.
if(FLUTTER_TARGET_PLATFORM_SYSROOT)
set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT})
set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
endif()
# Define build configuration options.
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE "Debug" CACHE
STRING "Flutter build mode" FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug" "Profile" "Release")
endif()
# Compilation settings that should be applied to most targets.
#
# Be cautious about adding new options here, as plugins use this function by
# default. In most cases, you should add new options to specific targets instead
# of modifying this function.
function(APPLY_STANDARD_SETTINGS TARGET)
target_compile_features(${TARGET} PUBLIC cxx_std_14)
target_compile_options(${TARGET} PRIVATE -Wall -Werror)
target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")
target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>")
endfunction()
# Flutter library and tool build rules.
set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
add_subdirectory(${FLUTTER_MANAGED_DIR})
# System-level dependencies.
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
# Define the application target. To change its name, change BINARY_NAME above,
# not the value here, or `flutter run` will no longer work.
#
# Any new source files that you add to the application should be added here.
add_executable(${BINARY_NAME}
"main.cc"
"my_application.cc"
"${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
)
# Apply the standard set of build settings. This can be removed for applications
# that need different build settings.
apply_standard_settings(${BINARY_NAME})
# Add dependency libraries. Add any application-specific dependencies here.
target_link_libraries(${BINARY_NAME} PRIVATE flutter)
target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
# Run the Flutter tool portions of the build. This must not be removed.
add_dependencies(${BINARY_NAME} flutter_assemble)
# Only the install-generated bundle's copy of the executable will launch
# correctly, since the resources must in the right relative locations. To avoid
# people trying to run the unbundled copy, put it in a subdirectory instead of
# the default top-level location.
set_target_properties(${BINARY_NAME}
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
)
# Generated plugin build rules, which manage building the plugins and adding
# them to the application.
include(flutter/generated_plugins.cmake)
# === Installation ===
# By default, "installing" just makes a relocatable bundle in the build
# directory.
set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle")
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
endif()
# Start with a clean build bundle directory every time.
install(CODE "
file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\")
" COMPONENT Runtime)
set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
COMPONENT Runtime)
install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
COMPONENT Runtime)
install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
install(FILES "${bundled_library}"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
endforeach(bundled_library)
# Fully re-copy the assets directory on each build to avoid having stale files
# from a previous install.
set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
install(CODE "
file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
" COMPONENT Runtime)
install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
# Install the AOT library on non-Debug builds only.
if(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
endif()

View File

@@ -1,88 +0,0 @@
# This file controls Flutter-level build steps. It should not be edited.
cmake_minimum_required(VERSION 3.10)
set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
# Configuration provided via flutter tool.
include(${EPHEMERAL_DIR}/generated_config.cmake)
# TODO: Move the rest of this into files in ephemeral. See
# https://github.com/flutter/flutter/issues/57146.
# Serves the same purpose as list(TRANSFORM ... PREPEND ...),
# which isn't available in 3.10.
function(list_prepend LIST_NAME PREFIX)
set(NEW_LIST "")
foreach(element ${${LIST_NAME}})
list(APPEND NEW_LIST "${PREFIX}${element}")
endforeach(element)
set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE)
endfunction()
# === Flutter Library ===
# System-level dependencies.
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so")
# Published to parent scope for install step.
set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE)
list(APPEND FLUTTER_LIBRARY_HEADERS
"fl_basic_message_channel.h"
"fl_binary_codec.h"
"fl_binary_messenger.h"
"fl_dart_project.h"
"fl_engine.h"
"fl_json_message_codec.h"
"fl_json_method_codec.h"
"fl_message_codec.h"
"fl_method_call.h"
"fl_method_channel.h"
"fl_method_codec.h"
"fl_method_response.h"
"fl_plugin_registrar.h"
"fl_plugin_registry.h"
"fl_standard_message_codec.h"
"fl_standard_method_codec.h"
"fl_string_codec.h"
"fl_value.h"
"fl_view.h"
"flutter_linux.h"
)
list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/")
add_library(flutter INTERFACE)
target_include_directories(flutter INTERFACE
"${EPHEMERAL_DIR}"
)
target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}")
target_link_libraries(flutter INTERFACE
PkgConfig::GTK
PkgConfig::GLIB
PkgConfig::GIO
)
add_dependencies(flutter flutter_assemble)
# === Flutter tool backend ===
# _phony_ is a non-existent file to force this command to run every time,
# since currently there's no way to get a full input/output list from the
# flutter tool.
add_custom_command(
OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
${CMAKE_CURRENT_BINARY_DIR}/_phony_
COMMAND ${CMAKE_COMMAND} -E env
${FLUTTER_TOOL_ENVIRONMENT}
"${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
VERBATIM
)
add_custom_target(flutter_assemble DEPENDS
"${FLUTTER_LIBRARY}"
${FLUTTER_LIBRARY_HEADERS}
)

View File

@@ -1,27 +0,0 @@
//
// Generated file. Do not edit.
//
// clang-format off
#include "generated_plugin_registrant.h"
#include <file_selector_linux/file_selector_plugin.h>
#include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h>
#include <record_linux/record_linux_plugin.h>
#include <url_launcher_linux/url_launcher_plugin.h>
void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin");
flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar);
g_autoptr(FlPluginRegistrar) record_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "RecordLinuxPlugin");
record_linux_plugin_register_with_registrar(record_linux_registrar);
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
}

View File

@@ -1,15 +0,0 @@
//
// Generated file. Do not edit.
//
// clang-format off
#ifndef GENERATED_PLUGIN_REGISTRANT_
#define GENERATED_PLUGIN_REGISTRANT_
#include <flutter_linux/flutter_linux.h>
// Registers Flutter plugins.
void fl_register_plugins(FlPluginRegistry* registry);
#endif // GENERATED_PLUGIN_REGISTRANT_

View File

@@ -1,27 +0,0 @@
#
# Generated file, do not edit.
#
list(APPEND FLUTTER_PLUGIN_LIST
file_selector_linux
flutter_secure_storage_linux
record_linux
url_launcher_linux
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST
)
set(PLUGIN_BUNDLED_LIBRARIES)
foreach(plugin ${FLUTTER_PLUGIN_LIST})
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
endforeach(plugin)
foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
endforeach(ffi_plugin)

View File

@@ -1,6 +0,0 @@
#include "my_application.h"
int main(int argc, char** argv) {
g_autoptr(MyApplication) app = my_application_new();
return g_application_run(G_APPLICATION(app), argc, argv);
}

View File

@@ -1,104 +0,0 @@
#include "my_application.h"
#include <flutter_linux/flutter_linux.h>
#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
#endif
#include "flutter/generated_plugin_registrant.h"
struct _MyApplication {
GtkApplication parent_instance;
char** dart_entrypoint_arguments;
};
G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION)
// Implements GApplication::activate.
static void my_application_activate(GApplication* application) {
MyApplication* self = MY_APPLICATION(application);
GtkWindow* window =
GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
// Use a header bar when running in GNOME as this is the common style used
// by applications and is the setup most users will be using (e.g. Ubuntu
// desktop).
// If running on X and not using GNOME then just use a traditional title bar
// in case the window manager does more exotic layout, e.g. tiling.
// If running on Wayland assume the header bar will work (may need changing
// if future cases occur).
gboolean use_header_bar = TRUE;
#ifdef GDK_WINDOWING_X11
GdkScreen* screen = gtk_window_get_screen(window);
if (GDK_IS_X11_SCREEN(screen)) {
const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen);
if (g_strcmp0(wm_name, "GNOME Shell") != 0) {
use_header_bar = FALSE;
}
}
#endif
if (use_header_bar) {
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
gtk_widget_show(GTK_WIDGET(header_bar));
gtk_header_bar_set_title(header_bar, "ride");
gtk_header_bar_set_show_close_button(header_bar, TRUE);
gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
} else {
gtk_window_set_title(window, "ride");
}
gtk_window_set_default_size(window, 1280, 720);
gtk_widget_show(GTK_WIDGET(window));
g_autoptr(FlDartProject) project = fl_dart_project_new();
fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
FlView* view = fl_view_new(project);
gtk_widget_show(GTK_WIDGET(view));
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
fl_register_plugins(FL_PLUGIN_REGISTRY(view));
gtk_widget_grab_focus(GTK_WIDGET(view));
}
// Implements GApplication::local_command_line.
static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) {
MyApplication* self = MY_APPLICATION(application);
// Strip out the first argument as it is the binary name.
self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
g_autoptr(GError) error = nullptr;
if (!g_application_register(application, nullptr, &error)) {
g_warning("Failed to register: %s", error->message);
*exit_status = 1;
return TRUE;
}
g_application_activate(application);
*exit_status = 0;
return TRUE;
}
// Implements GObject::dispose.
static void my_application_dispose(GObject* object) {
MyApplication* self = MY_APPLICATION(object);
g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev);
G_OBJECT_CLASS(my_application_parent_class)->dispose(object);
}
static void my_application_class_init(MyApplicationClass* klass) {
G_APPLICATION_CLASS(klass)->activate = my_application_activate;
G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
}
static void my_application_init(MyApplication* self) {}
MyApplication* my_application_new() {
return MY_APPLICATION(g_object_new(my_application_get_type(),
"application-id", APPLICATION_ID,
"flags", G_APPLICATION_NON_UNIQUE,
nullptr));
}

View File

@@ -1,18 +0,0 @@
#ifndef FLUTTER_MY_APPLICATION_H_
#define FLUTTER_MY_APPLICATION_H_
#include <gtk/gtk.h>
G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
GtkApplication)
/**
* my_application_new:
*
* Creates a new Flutter-based application.
*
* Returns: a new #MyApplication.
*/
MyApplication* my_application_new();
#endif // FLUTTER_MY_APPLICATION_H_

View File

@@ -6,6 +6,7 @@ import FlutterMacOS
import Foundation
import audio_session
import battery_plus
import device_info_plus
import file_selector_macos
import firebase_auth
@@ -25,6 +26,7 @@ import location
import package_info_plus
import path_provider_foundation
import record_darwin
import share_plus
import sign_in_with_apple
import sqflite_darwin
import url_launcher_macos
@@ -34,6 +36,7 @@ import webview_flutter_wkwebview
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin"))
BatteryPlusMacosPlugin.register(with: registry.registrar(forPlugin: "BatteryPlusMacosPlugin"))
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin"))
@@ -48,15 +51,16 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin"))
JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
FLALocalAuthPlugin.register(with: registry.registrar(forPlugin: "FLALocalAuthPlugin"))
LocalAuthPlugin.register(with: registry.registrar(forPlugin: "LocalAuthPlugin"))
LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin"))
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
RecordPlugin.register(with: registry.registrar(forPlugin: "RecordPlugin"))
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
SignInWithApplePlugin.register(with: registry.registrar(forPlugin: "SignInWithApplePlugin"))
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin"))
WakelockPlusMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockPlusMacosPlugin"))
FLTWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "FLTWebViewFlutterPlugin"))
WebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "WebViewFlutterPlugin"))
}

732
pubspec.lock Executable file → Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -61,10 +61,10 @@ dependencies:
vibration: ^2.0.1
wakelock_plus:
# background_location: ^0.13.0
background_location:
git:
url: https://github.com/dharmik-dalwadi-seaflux/background_location.git
ref: master
# background_location:
# git:
# url: https://github.com/dharmik-dalwadi-seaflux/background_location.git
# ref: master
# flutter_overlay_apps:
# git:
@@ -74,7 +74,8 @@ dependencies:
dio: ^5.4.3+1
webview_flutter: ^4.9.0
just_audio: ^0.9.37
share: ^2.0.4
# share: ^2.0.4
google_sign_in: ^6.2.1
# google_mlkit_text_recognition: ^0.14.0
sign_in_with_apple: ^6.1.0
@@ -93,6 +94,8 @@ dependencies:
jwt_decoder: ^2.0.1
jailbreak_root_detection: ^1.1.5
device_info_plus: ^11.3.0
share_plus: ^11.0.0
battery_plus: ^6.2.2
# flutter_isolate: ^2.1.0
# lingo_hunter: ^1.0.3
@@ -141,3 +144,5 @@ flutter:
- family: digit
fonts:
- asset: assets/fonts/digit.ttf
dependency_overrides:
record_platform_interface: "1.2.0"

View File

@@ -6,6 +6,7 @@
#include "generated_plugin_registrant.h"
#include <battery_plus/battery_plus_windows_plugin.h>
#include <file_selector_windows/file_selector_windows.h>
#include <firebase_auth/firebase_auth_plugin_c_api.h>
#include <firebase_core/firebase_core_plugin_c_api.h>
@@ -16,9 +17,12 @@
#include <local_auth_windows/local_auth_plugin.h>
#include <permission_handler_windows/permission_handler_windows_plugin.h>
#include <record_windows/record_windows_plugin_c_api.h>
#include <share_plus/share_plus_windows_plugin_c_api.h>
#include <url_launcher_windows/url_launcher_windows.h>
void RegisterPlugins(flutter::PluginRegistry* registry) {
BatteryPlusWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("BatteryPlusWindowsPlugin"));
FileSelectorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FileSelectorWindows"));
FirebaseAuthPluginCApiRegisterWithRegistrar(
@@ -39,6 +43,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
RecordWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("RecordWindowsPluginCApi"));
SharePlusWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
UrlLauncherWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
}

View File

@@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
battery_plus
file_selector_windows
firebase_auth
firebase_core
@@ -13,6 +14,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
local_auth_windows
permission_handler_windows
record_windows
share_plus
url_launcher_windows
)