From 441385069c682fe04f768f0e9a83af11e24e5e19 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Wed, 6 Aug 2025 01:10:52 +0300 Subject: [PATCH] 25-8-6-1 --- .../org.eclipse.buildship.core.prefs | 13 + .../arm64-v8a/configure_fingerprint.bin | 24 +- .../armeabi-v7a/configure_fingerprint.bin | 24 +- .../6a58wo5c/x86/configure_fingerprint.bin | 24 +- .../6a58wo5c/x86_64/configure_fingerprint.bin | 24 +- .../arm64-v8a/configure_fingerprint.bin | 24 +- .../armeabi-v7a/configure_fingerprint.bin | 24 +- .../4y6h5l4y/x86/configure_fingerprint.bin | 24 +- .../4y6h5l4y/x86_64/configure_fingerprint.bin | 24 +- android/app/build.gradle | 102 +- android/build.gradle | 10 +- .../reports/problems/problems-report.html | 663 ++++++++++ .../gradle/wrapper/gradle-wrapper.properties | 8 +- android/settings.gradle | 31 +- bubble-master/pubspec.lock | 74 +- ios/Runner/Info.plist | 4 +- .../auth/captin/invit_controller.dart | 2 +- .../auth/captin/login_captin_controller.dart | 65 +- lib/controller/firebase/firbase_messge.dart | 4 +- lib/controller/functions/battery_status.dart | 39 + lib/controller/functions/device_analyzer.dart | 206 +++ .../location_background_controller.dart | 94 +- .../functions/location_controller.dart | 3 + .../functions/performance_test.dart | 43 + .../home/captin/home_captain_controller.dart | 2 +- lib/controller/local/translations.dart | 39 +- .../payment/driver_payment_controller.dart | 4 +- lib/controller/themes/themes.dart | 8 +- lib/main.dart | 1 + lib/views/auth/captin/login_captin.dart | 1106 +++++++---------- .../device_compatibility_page.dart | 248 ++++ .../Captin/home_captain/drawer_captain.dart | 17 +- .../home/Captin/home_captain/home_captin.dart | 222 ++-- .../widget/left_menu_map_captain.dart | 4 + .../google_driver_map_page.dart | 7 +- linux/.gitignore | 1 - linux/CMakeLists.txt | 139 --- linux/flutter/CMakeLists.txt | 88 -- linux/flutter/generated_plugin_registrant.cc | 27 - linux/flutter/generated_plugin_registrant.h | 15 - linux/flutter/generated_plugins.cmake | 27 - linux/main.cc | 6 - linux/my_application.cc | 104 -- linux/my_application.h | 18 - macos/Flutter/GeneratedPluginRegistrant.swift | 8 +- pubspec.lock | 732 +++++------ pubspec.yaml | 15 +- .../flutter/generated_plugin_registrant.cc | 6 + windows/flutter/generated_plugins.cmake | 2 + 49 files changed, 2577 insertions(+), 1822 deletions(-) create mode 100644 android/.settings/org.eclipse.buildship.core.prefs create mode 100644 android/build/reports/problems/problems-report.html create mode 100644 lib/controller/functions/battery_status.dart create mode 100644 lib/controller/functions/device_analyzer.dart create mode 100644 lib/controller/functions/performance_test.dart create mode 100644 lib/views/home/Captin/home_captain/device_compatibility_page.dart delete mode 100755 linux/.gitignore delete mode 100755 linux/CMakeLists.txt delete mode 100755 linux/flutter/CMakeLists.txt delete mode 100755 linux/flutter/generated_plugin_registrant.cc delete mode 100755 linux/flutter/generated_plugin_registrant.h delete mode 100755 linux/flutter/generated_plugins.cmake delete mode 100755 linux/main.cc delete mode 100755 linux/my_application.cc delete mode 100755 linux/my_application.h mode change 100755 => 100644 pubspec.lock diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..e479558 --- /dev/null +++ b/android/.settings/org.eclipse.buildship.core.prefs @@ -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 diff --git a/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/configure_fingerprint.bin index 8542876..53e3881 100644 --- a/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/configure_fingerprint.bin @@ -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  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  2 +z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build.json  ټ2 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build_mini.json  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  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  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  2 ^ 2z +u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build_file_index.txt  ټ2 ^ 2z x -v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/compile_commands.json  2 2~ +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 +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 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/metadata_generation_command.txt  ټ2  2w u -s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/prefab_config.json  2  ( 2| +s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/prefab_config.json  ټ2  ( 2| z -x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/symbol_folder_index.txt  2  o 2b +x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/symbol_folder_index.txt  ټ2  o 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  ټ2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/configure_fingerprint.bin index 730cc2a..dcded2e 100644 --- a/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log  /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  2  2 +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2 ~ -|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build.json  2 2 +|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build.json  2 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build_mini.json  2 2r +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build_mini.json  2 2r p -n/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja  2 2v +n/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja  2 2v t -r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja.txt  2{ +r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja.txt  2{ y -w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build_file_index.txt  2 ^ 2| +w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build_file_index.txt  2 ^ 2| z -x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json  2 2 +x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json  2 2 ~ -|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json.bin  2  2 +|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json.bin  2  2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/metadata_generation_command.txt  2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/metadata_generation_command.txt  2  2y w -u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/prefab_config.json  2  ( 2~ +u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/prefab_config.json  2  ( 2~ | -z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/symbol_folder_index.txt  2  q 2b +z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/symbol_folder_index.txt  2  q 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/6a58wo5c/x86/configure_fingerprint.bin b/android/app/.cxx/Debug/6a58wo5c/x86/configure_fingerprint.bin index f8b81ea..21fadd5 100644 --- a/android/app/.cxx/Debug/6a58wo5c/x86/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/6a58wo5c/x86/configure_fingerprint.bin @@ -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  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  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  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  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  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  2 ^ 2t +o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build_file_index.txt  ľ2 ^ 2t r -p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/compile_commands.json  2 2x +p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/compile_commands.json  ľ2 2x v -t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/compile_commands.json.bin  2  2~ +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 +z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/metadata_generation_command.txt  ľ2  2q o -m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/prefab_config.json  2  ( 2v +m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/prefab_config.json  ľ2  ( 2v t -r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/symbol_folder_index.txt  2  i 2b +r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/symbol_folder_index.txt  ľ2  i 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  ľ2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/6a58wo5c/x86_64/configure_fingerprint.bin b/android/app/.cxx/Debug/6a58wo5c/x86_64/configure_fingerprint.bin index 21149b9..9e74efd 100644 --- a/android/app/.cxx/Debug/6a58wo5c/x86_64/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/6a58wo5c/x86_64/configure_fingerprint.bin @@ -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  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  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  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  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  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  2 ^ 2w +r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build_file_index.txt  2 ^ 2w u -s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json  2 2{ +s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json  2 2{ y -w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json.bin  2  2 +w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json.bin  2  2  -}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/metadata_generation_command.txt  2 +}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/metadata_generation_command.txt  2  2t r -p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/prefab_config.json  2  ( 2y +p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/prefab_config.json  2  ( 2y w -u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/symbol_folder_index.txt  2  l 2b +u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/symbol_folder_index.txt  2  l 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/configure_fingerprint.bin index 40e1b51..f5de38c 100644 --- a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/configure_fingerprint.bin +++ b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/configure_fingerprint.bin @@ -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 ^ 2 +~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build_file_index.txt  2 ^ 2  -/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  2 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/compile_commands.json.bin  Ԕ2  2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/compile_commands.json.bin  2  2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/metadata_generation_command.txt  Ԕ2 +/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 +|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/prefab_config.json  2  ( 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/symbol_folder_index.txt  Ԕ2  x 2b +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/symbol_folder_index.txt  2  x 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  Ԕ2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/configure_fingerprint.bin index 234b116..dc52edd 100644 --- a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/configure_fingerprint.bin +++ b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/configure_fingerprint.bin @@ -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 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/android_gradle_build.json  ̓2 ߣ2  -/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 ^ 2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build_file_index.txt  ̓2 ^ 2  -/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  ̓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/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/metadata_generation_command.txt  ̓2  2  -~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/prefab_config.json  Ö2  ( 2 +~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/prefab_config.json  ̓2  ( 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/symbol_folder_index.txt  Ö2  z 2b +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/symbol_folder_index.txt  ̓2  z 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  Ö2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  ̓2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/configure_fingerprint.bin b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/configure_fingerprint.bin index 523b39b..9ae2c58 100644 --- a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/configure_fingerprint.bin +++ b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/configure_fingerprint.bin @@ -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 +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ѓ2  2  -}/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  2DŽ 2w +o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build.ninja  Ѓ2DŽ 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 ^ 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 +y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/compile_commands.json  Ѓ2 2  -}/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/compile_commands.json.bin  Ѓ2  2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/metadata_generation_command.txt  2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/metadata_generation_command.txt  Ѓ2  2z x -v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/prefab_config.json  2  ( 2 +v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/prefab_config.json  Ѓ2  ( 2 } -{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/symbol_folder_index.txt  2  r 2b +{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/symbol_folder_index.txt  Ѓ2  r 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  Ѓ2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/configure_fingerprint.bin b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/configure_fingerprint.bin index 2596609..a1337e9 100644 --- a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/configure_fingerprint.bin +++ b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/configure_fingerprint.bin @@ -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 ^ 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  ҃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/compile_commands.json.bin  ҃2  2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/metadata_generation_command.txt  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  ( 2 +y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/prefab_config.json  ҃2  ( 2  -~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/symbol_folder_index.txt  2  u 2b +~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/symbol_folder_index.txt  ҃2  u 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  ҃2  Ў2 \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index ab595c1..c5eb0bc 100755 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -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' - -} +} \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index cef3991..3131272 100755 --- a/android/build.gradle +++ b/android/build.gradle @@ -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" } } diff --git a/android/build/reports/problems/problems-report.html b/android/build/reports/problems/problems-report.html new file mode 100644 index 0000000..5dfc120 --- /dev/null +++ b/android/build/reports/problems/problems-report.html @@ -0,0 +1,663 @@ + + + + + + + + + + + + + Gradle Configuration Cache + + + +
+ +
+ Loading... +
+ + + + + + diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index edeffcc..a667694 100755 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -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 diff --git a/android/settings.gradle b/android/settings.gradle index 44e62bc..875c0af 100755 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -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" \ No newline at end of file diff --git a/bubble-master/pubspec.lock b/bubble-master/pubspec.lock index 461388f..f4bbb72 100755 --- a/bubble-master/pubspec.lock +++ b/bubble-master/pubspec.lock @@ -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" diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index ccddd90..ad7c2d6 100755 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -35,7 +35,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 108 + 109 CFBundleSignature ???? CFBundleURLTypes @@ -50,7 +50,7 @@ CFBundleVersion - 5.0.108 + 5.0.109 FirebaseAppDelegateProxyEnabled NO GMSApiKey diff --git a/lib/controller/auth/captin/invit_controller.dart b/lib/controller/auth/captin/invit_controller.dart index b69546d..999399e 100755 --- a/lib/controller/auth/captin/invit_controller.dart +++ b/lib/controller/auth/captin/invit_controller.dart @@ -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'; diff --git a/lib/controller/auth/captin/login_captin_controller.dart b/lib/controller/auth/captin/login_captin_controller.dart index 66beb5f..8ece6a5 100755 --- a/lib/controller/auth/captin/login_captin_controller.dart +++ b/lib/controller/auth/captin/login_captin_controller.dart @@ -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 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), diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index 9e1d12a..ab80ccc 100755 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -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 fireBaseTitles(RemoteMessage message) async { - if (message.notification!.title! == 'Order'.tr) { + if (message.notification!.title! == 'Order') { if (Platform.isAndroid) { notificationController.showNotification( message.notification!.title.toString(), diff --git a/lib/controller/functions/battery_status.dart b/lib/controller/functions/battery_status.dart new file mode 100644 index 0000000..a47470a --- /dev/null +++ b/lib/controller/functions/battery_status.dart @@ -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 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'); + } + } +} diff --git a/lib/controller/functions/device_analyzer.dart b/lib/controller/functions/device_analyzer.dart new file mode 100644 index 0000000..90dd839 --- /dev/null +++ b/lib/controller/functions/device_analyzer.dart @@ -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 _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 _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> analyzeDevice() async { + List> 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.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( + 0, (sum, item) => sum + (item['achieved_score'] as int)); + + return { + 'score': totalScore.clamp(0, 100), + 'details': details, + }; + } +} diff --git a/lib/controller/functions/location_background_controller.dart b/lib/controller/functions/location_background_controller.dart index e822d5f..b225bb5 100755 --- a/lib/controller/functions/location_background_controller.dart +++ b/lib/controller/functions/location_background_controller.dart @@ -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 requestLocationPermission() async { - var status = await Permission.locationAlways.status; - if (!status.isGranted) { - await Permission.locationAlways.request(); - } - } +// Future requestLocationPermission() async { +// var status = await Permission.locationAlways.status; +// if (!status.isGranted) { +// await Permission.locationAlways.request(); +// } +// } - Future 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 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(); +// } +// } +// } diff --git a/lib/controller/functions/location_controller.dart b/lib/controller/functions/location_controller.dart index 026aa49..d33c29f 100755 --- a/lib/controller/functions/location_controller.dart +++ b/lib/controller/functions/location_controller.dart @@ -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().totalPoints.toString(); isActive = Get.find().isActive; diff --git a/lib/controller/functions/performance_test.dart b/lib/controller/functions/performance_test.dart new file mode 100644 index 0000000..de86828 --- /dev/null +++ b/lib/controller/functions/performance_test.dart @@ -0,0 +1,43 @@ +import 'dart:io'; + +class PerformanceTester { + /// ✅ فحص سرعة الكتابة إلى التخزين (Storage Write Speed) بوحدة MB/s + static Future testStorageWriteSpeed() async { + try { + final tempDir = Directory.systemTemp; + final testFile = File('${tempDir.path}/speed_test.txt'); + final data = List.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 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; + } + } +} diff --git a/lib/controller/home/captin/home_captain_controller.dart b/lib/controller/home/captin/home_captain_controller.dart index 10209b0..4e0a137 100755 --- a/lib/controller/home/captin/home_captain_controller.dart +++ b/lib/controller/home/captin/home_captain_controller.dart @@ -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)); diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 3f3dfef..52aa323 100755 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -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": "المبلغ المدفوع", diff --git a/lib/controller/payment/driver_payment_controller.dart b/lib/controller/payment/driver_payment_controller.dart index bbd69f8..55d7d1b 100755 --- a/lib/controller/payment/driver_payment_controller.dart +++ b/lib/controller/payment/driver_payment_controller.dart @@ -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') { diff --git a/lib/controller/themes/themes.dart b/lib/controller/themes/themes.dart index 8e81e2a..8bc52be 100755 --- a/lib/controller/themes/themes.dart +++ b/lib/controller/themes/themes.dart @@ -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, diff --git a/lib/main.dart b/lib/main.dart index dcb0c61..27e9d34 100755 --- a/lib/main.dart +++ b/lib/main.dart @@ -170,6 +170,7 @@ class _MyAppState extends State with WidgetsBindingObserver { await FirebaseMessaging.instance.requestPermission(); FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler); + await FirebaseMessagesController().getToken(); await NotificationController().initNotifications(); // You can add your other initializations here diff --git a/lib/views/auth/captin/login_captin.dart b/lib/views/auth/captin/login_captin.dart index b35841a..617334c 100755 --- a/lib/views/auth/captin/login_captin.dart +++ b/lib/views/auth/captin/login_captin.dart @@ -21,690 +21,504 @@ import '../../../controller/functions/overlay_permisssion.dart'; import '../../../main.dart'; import '../../../print.dart'; import '../../widgets/elevated_btn.dart'; -import '../../widgets/my_scafold.dart'; import '../../widgets/mycircular.dart'; import '../country_widget.dart'; class LoginCaptin extends StatelessWidget { - // final controller = Get.put(LoginCaptinController()); + final AuthController authController = Get.put(AuthController()); + final LoginDriverController controller = Get.put(LoginDriverController()); LoginCaptin({super.key}); - final AuthController authController = Get.put(AuthController()); + @override Widget build(BuildContext context) { - Get.put(LoginDriverController()); - // Get.put(LocationBackgroundController()); return GetBuilder( - builder: (controller) => MyScafolld( - title: 'Login Driver'.tr, - isleading: false, - body: [ - if (box.read(BoxName.agreeTerms).toString() != 'agreed') - agreedPage() - else if (box.read(BoxName.countryCode) == null) - CountryPicker() - else if (box.read(BoxName.locationPermission) != 'true') - locationPermissionDialog() - else - SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - controller.isGoogleDashOpen - ? registerWitoutGoogle(controller) - : Padding( - padding: const EdgeInsets.all(25), - child: Center( - child: Container( - decoration: AppStyle.boxDecoration1, - height: Get.height * .7, - width: Get.width * .9, - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Image.asset( - 'assets/images/logo.gif', - height: Get.width * .3, - width: Get.width * .3, - fit: BoxFit.fill, - ), - Platform.isIOS && controller.isTest == 0 - ? Container( - decoration: AppStyle.boxDecoration, - child: Column( - children: [ - Form( - key: controller.formKey, - child: Padding( - padding: - const EdgeInsets.all(16.0), - child: SingleChildScrollView( - child: Column( - children: [ - TextFormField( - keyboardType: - TextInputType - .emailAddress, - controller: controller - .emailController, - decoration: - InputDecoration( - focusedBorder: - OutlineInputBorder( - borderSide: - const BorderSide( - color: AppColor - .primaryColor, - width: 2.0, - ), - borderRadius: - BorderRadius - .circular( - 10), - ), - fillColor: AppColor - .accentColor, - hoverColor: AppColor - .accentColor, - focusColor: AppColor - .accentColor, - border: const OutlineInputBorder( - borderRadius: BorderRadius - .all(Radius - .circular( - 12))), - labelText: 'Email'.tr, - hintText: - 'Enter your email address' - .tr, - ), - validator: (value) { - if (value!.isEmpty || - (!value.contains( - '@') || - !value.contains( - '.'))) { - return 'Please enter Your Email.' - .tr; - } - return null; - }, - ), - const SizedBox( - height: 15, - ), - TextFormField( - obscureText: true, - keyboardType: - TextInputType - .emailAddress, - controller: controller - .passwordController, - decoration: - InputDecoration( - focusedBorder: - OutlineInputBorder( - borderSide: - const BorderSide( - color: AppColor - .primaryColor, - width: 2.0, - ), - borderRadius: - BorderRadius - .circular( - 10), - ), - fillColor: AppColor - .accentColor, - hoverColor: AppColor - .accentColor, - focusColor: AppColor - .accentColor, - border: const OutlineInputBorder( - borderRadius: BorderRadius - .all(Radius - .circular( - 12))), - labelText: - 'Password'.tr, - hintText: - 'Please enter your phone number.' - .tr, - ), - validator: (value) { - if (value!.isEmpty) { - return 'Please enter Your Password.' - .tr; - } - if (value.length < - 6) { - return 'Password must br at least 6 character.' - .tr; - } - return null; - }, - ), - GetBuilder< - LoginDriverController>( - builder: (controller) => - controller.isloading - ? const MyCircularProgressIndicator() - : MyElevatedButton( - onPressed: - () async { - if (controller - .formKey - .currentState! - .validate()) { - await Get.find() - .loginWithGoogleCredential( - controller - .passwordController - .text, - controller - .emailController - .text, - ); - } - }, - title: - 'Submit' - .tr, - ), - ) - ], - ), - ), - ), - ), - const SizedBox( - height: 10, - ), - ], - ), - ) - : Container( - decoration: AppStyle.boxDecoration1, - height: Get.height * .3, - width: Get.width * .8, - child: Center( - child: Column( - mainAxisAlignment: - MainAxisAlignment.spaceAround, - children: [ - Text( - 'Sign in with Google for easier email and name entry' - .tr, - textAlign: TextAlign.center, - style: AppStyle.title, - ), - Text( - 'Or'.tr, - textAlign: TextAlign.center, - style: AppStyle.title, - ), - GestureDetector( - onTap: () async { - controller - .changeGoogleDashOpen(); - }, - child: Container( - padding: const EdgeInsets - .symmetric( - horizontal: 16, - vertical: 10), - decoration: BoxDecoration( - color: AppColor.blueColor, - borderRadius: - BorderRadius.circular( - 8), - ), - child: Row( - mainAxisSize: - MainAxisSize.min, - children: [ - const Icon( - Icons.email, - color: AppColor - .yellowColor, - ), - const SizedBox(width: 8), - Text( - 'Create new Account'.tr, - style: const TextStyle( - color: Colors.white, - fontSize: 16, - fontWeight: - FontWeight.w500, - ), - ), - ], - ), - ), - ), - ], - ), - ), - ), - GestureDetector( - onTap: () async { - await GoogleSignInHelper() - .signInFromLogin(); - }, - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 16, vertical: 10), - decoration: BoxDecoration( - color: AppColor.redColor, - borderRadius: BorderRadius.circular(8), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon( - FontAwesome.google, - color: AppColor.blueColor, - ), - const SizedBox(width: 8), - Text( - 'Sign In by Google'.tr, - style: const TextStyle( - color: Colors.white, - fontSize: 16, - fontWeight: FontWeight.w500, - ), - ), - ], - ), - ), - ), - !Platform.isAndroid - ? GestureDetector( - onTap: () async { - User? user = await authController - .signInWithApple(); - if (user != null) { - box.write(BoxName.emailDriver, - (user.email.toString())); + builder: (controller) { + return Scaffold( + backgroundColor: AppColor.secondaryColor, + body: SafeArea( + child: Center( + child: _buildBodyContent(context, controller), + ), + ), + ); + }, + ); + } - box.write( - BoxName.driverID, user.uid); + /// Determines which UI to show based on the driver's progress. + Widget _buildBodyContent( + BuildContext context, LoginDriverController controller) { + if (box.read(BoxName.agreeTerms) != 'agreed') { + return _buildAgreementPage(context, controller); + } + if (box.read(BoxName.countryCode) == null) { + return _buildCountryPickerPage(); // Improved wrapper for country picker + } + if (box.read(BoxName.locationPermission) != 'true') { + return _buildLocationPermissionPage(context, controller); + } + // Main login flow + return _buildLoginFlow(context, controller); + } - Get.find() - .loginWithGoogleCredential( - box - .read(BoxName.driverID) - .toString(), - (box - .read(BoxName.emailDriver) - .toString()), - ); - // Navigate to another screen or perform other actions - } else {} - }, - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 16, vertical: 10), - decoration: BoxDecoration( - color: Colors.black, - borderRadius: - BorderRadius.circular(8), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon( - Icons.apple, - color: Colors.white, - size: 24, - ), - const SizedBox(width: 8), - Text( - 'Sign in with Apple'.tr, - style: const TextStyle( - color: Colors.white, - fontSize: 16, - fontWeight: FontWeight.w500, - ), - ), - ], - ), - ), - ) - : const SizedBox(), - ], - ), - ))), - GestureDetector( - onTap: () => Get.to(() => ContactUsPage()), - child: Text( - 'If you need assistance, contact us' - .tr, // Improved wording - style: AppStyle.subtitle, - ), - ), - // GestureDetector( - // onTap: () async { - // await storage.deleteAll(); - // box.erase(); - // }, - // child: Padding( - // padding: const EdgeInsets.all(8.0), - // child: Text( - // 'erase'.tr, // Improved wording - // style: AppStyle.subtitle, - // ), - // ), - // ), - ], + /// Manages the transition between social login options and the manual form. + Widget _buildLoginFlow( + BuildContext context, LoginDriverController controller) { + return AnimatedSwitcher( + duration: const Duration(milliseconds: 300), + transitionBuilder: (child, animation) { + return FadeTransition(opacity: animation, child: child); + }, + child: controller.showManualForm + ? _buildManualFormUI( + context, controller) // The new unified manual form + : _buildLoginUI( + context, controller), // Main screen with social options + ); + } + + /// Redesigned UI for the main login screen with social options. + Widget _buildLoginUI(BuildContext context, LoginDriverController controller) { + return SingleChildScrollView( + key: const ValueKey('socialLogin'), + padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 32.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + CircleAvatar( + radius: 65, + backgroundColor: Colors.white.withOpacity(0.9), + child: ClipOval( + child: Image.asset( + 'assets/images/logo.png', // Using PNG for better quality and performance + height: 120, + width: 120, ), - ) + ), + ), + const SizedBox(height: 20), + Text( + 'Driver Portal'.tr, + textAlign: TextAlign.center, + style: AppStyle.headTitle2.copyWith(fontSize: 28), + ), + const SizedBox(height: 8), + Text( + 'Sign in to start your journey'.tr, + textAlign: TextAlign.center, + style: AppStyle.subtitle, + ), + const SizedBox(height: 40), + _buildSocialLoginOptions(context, controller), + const SizedBox(height: 32), + Center( + child: GestureDetector( + onTap: () => Get.to(() => ContactUsPage()), + child: Text( + 'Need help? Contact Us'.tr, + style: AppStyle.subtitle.copyWith( + color: AppColor.blueColor, + decoration: TextDecoration.underline, + ), + ), + ), + ), ], ), ); } - Column registerWitoutGoogle(LoginDriverController controller) { + /// Builds the social login buttons (Google, Apple, and manual option). + Widget _buildSocialLoginOptions( + BuildContext context, LoginDriverController controller) { return Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, + crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - Form( - key: controller.formKey, - child: Padding( - padding: const EdgeInsets.all(16.0), - child: SingleChildScrollView( - child: Column( - children: [ - Padding( - padding: const EdgeInsets.all(16.0), - child: TextFormField( - obscureText: false, // Email should not be obscured - keyboardType: TextInputType.emailAddress, - controller: controller.emailController, - decoration: InputDecoration( - focusedBorder: OutlineInputBorder( - borderSide: const BorderSide( - color: AppColor.primaryColor, - width: 2.0, - ), - borderRadius: BorderRadius.circular(10), - ), - fillColor: AppColor.accentColor, - hoverColor: AppColor.accentColor, - focusColor: AppColor.accentColor, - border: const OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(12)), - ), - labelText: 'Email' - .tr, // English: Email / Arabic: البريد الإلكتروني - hintText: 'Please enter your Email.' - .tr, // English: Please enter your Email / Arabic: يرجى إدخال بريدك الإلكتروني - ), - validator: (value) { - if (value!.isEmpty) { - return 'Please enter your Email.' - .tr; // English: Please enter your Email / Arabic: يرجى إدخال بريدك الإلكتروني - } - if (!value.contains('@')) { - return 'Email must be correct.' - .tr; // English: Email must be correct / Arabic: البريد الإلكتروني يجب أن يكون صحيحاً - } - return null; - }, - ), - ), - Padding( - padding: const EdgeInsets.all(16.0), - child: TextFormField( - obscureText: true, // Password should be obscured - keyboardType: TextInputType.text, - controller: controller.passwordController, - decoration: InputDecoration( - focusedBorder: OutlineInputBorder( - borderSide: const BorderSide( - color: AppColor.primaryColor, - width: 2.0, - ), - borderRadius: BorderRadius.circular(10), - ), - fillColor: AppColor.accentColor, - hoverColor: AppColor.accentColor, - focusColor: AppColor.accentColor, - border: const OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(12)), - ), - labelText: 'Password' - .tr, // English: Password / Arabic: كلمة المرور - hintText: 'Please enter your Password.' - .tr, // English: Please enter your Password / Arabic: يرجى إدخال كلمة المرور - ), - validator: (value) { - if (value!.isEmpty) { - return 'Please enter your Password.' - .tr; // English: Please enter your Password / Arabic: يرجى إدخال كلمة المرور - } - if (value.length < 6) { - return 'Password must be at least 6 characters.' - .tr; // English: Password must be at least 6 characters / Arabic: يجب أن تكون كلمة المرور مكونة من 6 أحرف على الأقل - } - return null; - }, - ), - ), - controller.isloading - ? const MyCircularProgressIndicator() - : MyElevatedButton( - onPressed: () { - if (controller.formKey.currentState!.validate()) { - String email = controller.emailController - .text; // Assume you have this controller - String uniqueId = - controller.generateUniqueIdFromEmail(email); - Log.print('Generated ID: $uniqueId'); - box.write(BoxName.driverID, uniqueId); - box.write(BoxName.emailDriver, - controller.emailController.text.toString()); - controller.loginUsingCredentialsWithoutGoogle( - controller.passwordController.text.toString(), - controller.emailController.text.toString(), - ); - } - }, - title: 'Next'.tr, - ), - ], - ), - ), - ), - ), - const SizedBox( - height: 200, - ), - GestureDetector( - onTap: () async { + // Google Login + _buildSocialButton( + text: 'Sign In with Google'.tr, + icon: FontAwesome.google, + backgroundColor: AppColor.redColor, + onPressed: () async { await GoogleSignInHelper().signInFromLogin(); }, - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10), - decoration: BoxDecoration( - color: AppColor.redColor, - borderRadius: BorderRadius.circular(8), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon( - FontAwesome.google, - color: AppColor.blueColor, - ), - const SizedBox(width: 8), - Text( - 'Sign In by Google'.tr, - style: const TextStyle( - color: Colors.white, - fontSize: 16, - fontWeight: FontWeight.w500, - ), - ), - ], - ), + ), + // Apple Login (for iOS only) + if (Platform.isIOS) ...[ + const SizedBox(height: 16), + _buildSocialButton( + text: 'Sign in with Apple'.tr, + icon: Icons.apple, + backgroundColor: Colors.black, + onPressed: () async { + User? user = await authController.signInWithApple(); + if (user != null) { + box.write(BoxName.emailDriver, user.email.toString()); + box.write(BoxName.driverID, user.uid); + controller.loginWithGoogleCredential( + user.uid, + user.email.toString(), + ); + } + }, ), + ], + const SizedBox(height: 24), + // Divider with "OR" + Row( + children: [ + const Expanded(child: Divider()), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Text('Or'.tr, style: AppStyle.subtitle), + ), + const Expanded(child: Divider()), + ], + ), + const SizedBox(height: 24), + // Manual Login with Email/Password + _buildSocialButton( + text: 'Continue with Email'.tr, + icon: Icons.email_outlined, + backgroundColor: AppColor.primaryColor, + onPressed: () => + controller.toggleManualFormView(), // New simplified logic ), ], ); } - Padding agreedPage() { - return Padding( - padding: const EdgeInsets.all(16), - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Image.asset( - 'assets/images/notepad.png', - width: Get.width * .2, - ), - SizedBox( - width: Get.width * .7, - child: Text( - 'Accept Ride\'s Terms & Review Privacy Notice'.tr, - style: AppStyle.headTitle2, - ), - ), - ], - ), - const SizedBox( - height: 30, - ), - RichText( - text: TextSpan( - text: - "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the " - .tr, - style: AppStyle.title, - children: [ - TextSpan( - text: 'Privacy Notice'.tr, - style: const TextStyle( - decoration: TextDecoration.underline, - color: AppColor.blueColor), - recognizer: TapGestureRecognizer() - ..onTap = () { - Get.defaultDialog( - title: ''.tr, - content: const SizedBox( - height: 400, - width: 400, - child: SingleChildScrollView( - child: HtmlWidget(AppInformation.privacyPolicy), - ), - )); - }), - TextSpan( - text: '. I am at least 18 years of age.'.tr, - ), - ], - ), - ), - const SizedBox( - height: 100, - ), - GetBuilder( - builder: (controller) => Column( - children: [ - Row( - children: [ - Checkbox.adaptive( - autofocus: true, - tristate: true, - splashRadius: 25, - activeColor: AppColor.primaryColor, - value: controller.isAgreeTerms, - onChanged: (value) => controller.changeAgreeTerm(), - ), - Text( - 'I Agree'.tr, - style: controller.isAgreeTerms - ? AppStyle.title - : AppStyle.title - .copyWith(color: AppColor.accentColor), - ), - ], - ), - MyElevatedButton( - title: 'Submit'.tr, - onPressed: () => controller.saveAgreementTerms()), - ], - ), - ) - ], - ), - ); - } + /// A unified and dynamic UI for both Manual Login and Registration. + Widget _buildManualFormUI( + BuildContext context, LoginDriverController controller) { + // Determine if it's in registration mode from the controller + final isRegister = controller.isRegisterMode; - locationPermissionDialog() { - return GetBuilder(builder: (controller) { - return Padding( - padding: const EdgeInsets.all(16), - child: Container( - height: Get.height * .4, - decoration: AppStyle.boxDecoration1, + return SingleChildScrollView( + key: const ValueKey('manualForm'), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Card( + elevation: 8, + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), child: Padding( padding: const EdgeInsets.all(20.0), - child: Center( + child: Form( + key: controller.formKey, child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceAround, + crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - Text( - 'We need access to your location to match you with nearby passengers and ensure accurate navigation.' - .tr, - textAlign: TextAlign.center, - style: AppStyle.title, - ), - Text( - 'Please allow location access at all times to receive ride requests and ensure smooth service.' - .tr, - textAlign: TextAlign.center, - style: AppStyle.title.copyWith(color: AppColor.greenColor), - ), - MyElevatedButton( - title: "Allow Location Access".tr, - onPressed: () async { - // Request location permissions - PermissionStatus status = - await Permission.location.status; - - if (!status.isGranted) { - getLocationPermission(); // Function to request permission - return; - } - - // Save permission status to local storage - box.write(BoxName.locationPermission, 'true'); - controller.update(); - }, - kolor: AppColor.greenColor, - ), - TextButton( - onPressed: () { - // Optionally, navigate to app settings for manual permission control - openAppSettings(); - }, - child: Text( - "Open Settings".tr, - style: const TextStyle(color: AppColor.blueColor), + // Back button to return to social login options + Align( + alignment: Alignment.topLeft, + child: IconButton( + icon: const Icon(Icons.arrow_back, + color: AppColor.primaryColor), + onPressed: () => controller.toggleManualFormView(), ), ), + const SizedBox(height: 10), + Text( + isRegister ? 'Create Driver Account'.tr : 'Driver Login'.tr, + textAlign: TextAlign.center, + style: AppStyle.headTitle2, + ), + const SizedBox(height: 24), + _buildTextFormField( + controller: controller.emailController, + labelText: 'Email'.tr, + hintText: 'Enter your email'.tr, + prefixIcon: Icons.email_outlined, + keyboardType: TextInputType.emailAddress, + validator: (value) { + if (value == null || !GetUtils.isEmail(value)) { + return 'Please enter a valid email'.tr; + } + return null; + }, + ), + const SizedBox(height: 20), + GetBuilder( + id: 'passwordVisibility', + builder: (_) => _buildTextFormField( + controller: controller.passwordController, + labelText: 'Password'.tr, + hintText: 'Enter your password'.tr, + prefixIcon: Icons.lock_outline, + obscureText: controller.isPasswordHidden, + suffixIcon: IconButton( + icon: Icon( + controller.isPasswordHidden + ? Icons.visibility_off + : Icons.visibility, + color: AppColor.primaryColor, + ), + onPressed: () => controller.togglePasswordVisibility(), + ), + validator: (value) { + if (value == null || value.length < 6) { + return 'Password must be at least 6 characters'.tr; + } + return null; + }, + ), + ), + const SizedBox(height: 30), + controller.isloading + ? const Center(child: MyCircularProgressIndicator()) + : MyElevatedButton( + title: isRegister ? 'Create Account'.tr : 'Login'.tr, + onPressed: () { + if (controller.formKey.currentState!.validate()) { + if (isRegister) { + // Registration Logic + String email = controller.emailController.text; + String uniqueId = + controller.generateUniqueIdFromEmail(email); + box.write(BoxName.driverID, uniqueId); + box.write(BoxName.emailDriver, email); + controller.loginUsingCredentialsWithoutGoogle( + controller.passwordController.text, + email, + ); + } else { + // Login Logic + controller.loginWithGoogleCredential( + controller.passwordController.text, + controller.emailController.text, + ); + } + } + }, + ), + const SizedBox(height: 20), + // Dynamic toggle button for Login/Register + Center( + child: RichText( + textAlign: TextAlign.center, + text: TextSpan( + style: + AppStyle.subtitle.copyWith(color: Colors.grey[700]), + children: [ + TextSpan( + text: isRegister + ? 'Already have an account? '.tr + : 'Don\'t have an account? '.tr, + ), + TextSpan( + text: isRegister ? 'Login'.tr : 'Register'.tr, + style: TextStyle( + color: AppColor.primaryColor, + fontWeight: FontWeight.bold, + decoration: TextDecoration.underline, + ), + recognizer: TapGestureRecognizer() + ..onTap = () => controller.toggleRegisterMode(), + ), + ], + ), + ), + ) ], ), ), ), ), - ); - }); + ), + ); + } + + /// A helper method to create styled TextFormFields. + TextFormField _buildTextFormField({ + required TextEditingController controller, + required String labelText, + required String hintText, + required IconData prefixIcon, + required String? Function(String?) validator, + bool obscureText = false, + Widget? suffixIcon, + TextInputType keyboardType = TextInputType.text, + }) { + return TextFormField( + controller: controller, + validator: validator, + obscureText: obscureText, + keyboardType: keyboardType, + decoration: InputDecoration( + labelText: labelText, + hintText: hintText, + prefixIcon: Icon(prefixIcon, color: AppColor.primaryColor), + suffixIcon: suffixIcon, + border: OutlineInputBorder(borderRadius: BorderRadius.circular(12.0)), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12.0), + borderSide: + const BorderSide(color: AppColor.primaryColor, width: 2.0), + ), + ), + ); + } + + /// A helper for creating consistent social login buttons. + Widget _buildSocialButton({ + required String text, + required IconData icon, + required Color backgroundColor, + required VoidCallback onPressed, + }) { + return ElevatedButton.icon( + icon: Icon(icon, color: Colors.white), + label: + Text(text, style: const TextStyle(color: Colors.white, fontSize: 16)), + onPressed: onPressed, + style: ElevatedButton.styleFrom( + backgroundColor: backgroundColor, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + padding: const EdgeInsets.symmetric(vertical: 14), + ), + ); + } + + /// A wrapper page for the Country Picker for a better UX. + Widget _buildCountryPickerPage() { + return Scaffold( + backgroundColor: AppColor.secondaryColor, + appBar: AppBar( + title: Text("Select Your Country".tr, style: AppStyle.headTitle2), + centerTitle: true, + backgroundColor: Colors.transparent, + elevation: 0, + ), + body: CountryPicker(), // Your existing country picker widget + ); + } + + // --- The following pages are kept as they are well-designed --- + + /// UI for the Terms and Conditions agreement page. + Widget _buildAgreementPage( + BuildContext context, LoginDriverController controller) { + return Padding( + padding: const EdgeInsets.all(24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.policy_outlined, + size: 80, color: AppColor.primaryColor), + const SizedBox(height: 20), + Text('Driver Agreement'.tr, + textAlign: TextAlign.center, style: AppStyle.headTitle2), + const SizedBox(height: 30), + RichText( + textAlign: TextAlign.center, + text: TextSpan( + style: + AppStyle.title.copyWith(height: 1.5, color: Colors.black87), + children: [ + TextSpan( + text: + "To become a driver, you must review and agree to the " + .tr), + TextSpan( + text: 'Terms of Use'.tr, + style: const TextStyle( + decoration: TextDecoration.underline, + color: AppColor.blueColor, + fontWeight: FontWeight.bold), + recognizer: TapGestureRecognizer() + ..onTap = () { + Get.defaultDialog( + title: 'Privacy Policy'.tr, + content: SizedBox( + height: Get.height * 0.6, + child: SingleChildScrollView( + child: + HtmlWidget(AppInformation.privacyPolicy)), + ), + ); + }), + TextSpan(text: " and acknowledge our Privacy Policy.".tr), + ], + ), + ), + const Spacer(), + CheckboxListTile( + title: Text('I Agree'.tr, style: AppStyle.title), + value: controller.isAgreeTerms, + onChanged: (value) => controller.changeAgreeTerm(), + activeColor: AppColor.primaryColor, + controlAffinity: ListTileControlAffinity.leading, + ), + const SizedBox(height: 16), + SizedBox( + width: double.infinity, + child: MyElevatedButton( + title: 'Continue'.tr, + onPressed: controller.isAgreeTerms + ? () => controller.saveAgreementTerms() + : () {}, // Button is disabled if not agreed + ), + ), + ], + ), + ); + } + + /// UI for the Location Permission request page. + Widget _buildLocationPermissionPage( + BuildContext context, LoginDriverController controller) { + return Padding( + padding: const EdgeInsets.all(24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const Icon(Icons.location_on_outlined, + size: 80, color: AppColor.primaryColor), + const SizedBox(height: 20), + Text( + 'Location Access Required'.tr, + textAlign: TextAlign.center, + style: AppStyle.headTitle2, + ), + const SizedBox(height: 16), + Text( + 'We need access to your location to match you with nearby passengers and provide accurate navigation.' + .tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + const SizedBox(height: 24), + Text( + 'Please allow location access "all the time" to receive ride requests even when the app is in the background.' + .tr, + textAlign: TextAlign.center, + style: AppStyle.title.copyWith( + color: AppColor.greenColor, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 40), + MyElevatedButton( + title: "Allow Location Access".tr, + onPressed: () async { + await getLocationPermission(); + if (await Permission.location.isGranted) { + box.write(BoxName.locationPermission, 'true'); + controller.update(); + } + }, + kolor: AppColor.greenColor, + ), + const SizedBox(height: 16), + TextButton( + onPressed: () => openAppSettings(), + child: Text("Open Settings".tr, + style: const TextStyle(color: AppColor.blueColor)), + ), + ], + ), + ); } } diff --git a/lib/views/home/Captin/home_captain/device_compatibility_page.dart b/lib/views/home/Captin/home_captain/device_compatibility_page.dart new file mode 100644 index 0000000..ebbf135 --- /dev/null +++ b/lib/views/home/Captin/home_captain/device_compatibility_page.dart @@ -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 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 createState() => + _DeviceCompatibilityPageState(); +} + +class _DeviceCompatibilityPageState extends State { + int score = 0; + List> details = []; + bool isLoading = true; + + @override + void initState() { + super.initState(); + _initializePage(); + } + + Future _initializePage() async { + // await BatteryNotifier.checkBatteryAndNotify(); + final result = await DeviceAnalyzer().analyzeDevice(); + + if (mounted) { + setState(() { + score = result['score']; + details = List>.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), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/views/home/Captin/home_captain/drawer_captain.dart b/lib/views/home/Captin/home_captain/drawer_captain.dart index 2ca67f6..692270a 100755 --- a/lib/views/home/Captin/home_captain/drawer_captain.dart +++ b/lib/views/home/Captin/home_captain/drawer_captain.dart @@ -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, diff --git a/lib/views/home/Captin/home_captain/home_captin.dart b/lib/views/home/Captin/home_captain/home_captin.dart index faf852c..a42a740 100755 --- a/lib/views/home/Captin/home_captain/home_captin.dart +++ b/lib/views/home/Captin/home_captain/home_captin.dart @@ -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(); + + // 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(); + 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().myLocation.latitude, - Get.find().myLocation.longitude, - ))); + // This button now just re-centers without changing rotation + if (homeCaptainController.mapHomeCaptainController != + null) { + homeCaptainController.mapHomeCaptainController! + .animateCamera(CameraUpdate.newLatLngZoom( + Get.find().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(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(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() - // .passengerLocation - // .toString(), - // 'endLocation': Get.find() - // .passengerDestination - // .toString(), - // 'name': Get.find().name.toString(), - // 'timeOfTrip': - // Get.find().timeOfOrder.toString(), - // 'fee': Get.find() - // .totalPassenger - // .toString(), - // 'duration': - // Get.find().duration.toString(), - // 'phone': Get.find().phone.toString(), - // 'email': Get.find().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( 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(); diff --git a/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart b/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart index b4dca16..1c23b87 100755 --- a/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart +++ b/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart @@ -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 leftMainMenuCaptainIcons() { // child: Builder(builder: (context) { // return IconButton( // onPressed: () async { + // Get.to( + // () => LoginPage(), + // ); // }, // icon: const Icon( // FontAwesome5.grin_tears, diff --git a/lib/views/home/Captin/mapDriverWidgets/google_driver_map_page.dart b/lib/views/home/Captin/mapDriverWidgets/google_driver_map_page.dart index 6fa8d37..799a62f 100755 --- a/lib/views/home/Captin/mapDriverWidgets/google_driver_map_page.dart +++ b/lib/views/home/Captin/mapDriverWidgets/google_driver_map_page.dart @@ -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; // diff --git a/linux/.gitignore b/linux/.gitignore deleted file mode 100755 index d3896c9..0000000 --- a/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt deleted file mode 100755 index 91eca71..0000000 --- a/linux/CMakeLists.txt +++ /dev/null @@ -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 "$<$>:-O3>") - target_compile_definitions(${TARGET} PRIVATE "$<$>: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() diff --git a/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt deleted file mode 100755 index d5bd016..0000000 --- a/linux/flutter/CMakeLists.txt +++ /dev/null @@ -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} -) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc deleted file mode 100755 index 8ac2ca5..0000000 --- a/linux/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,27 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include -#include -#include -#include - -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); -} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h deleted file mode 100755 index e0f0a47..0000000 --- a/linux/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void fl_register_plugins(FlPluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake deleted file mode 100755 index 76bed44..0000000 --- a/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -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 $) - 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) diff --git a/linux/main.cc b/linux/main.cc deleted file mode 100755 index e7c5c54..0000000 --- a/linux/main.cc +++ /dev/null @@ -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); -} diff --git a/linux/my_application.cc b/linux/my_application.cc deleted file mode 100755 index cb83e29..0000000 --- a/linux/my_application.cc +++ /dev/null @@ -1,104 +0,0 @@ -#include "my_application.h" - -#include -#ifdef GDK_WINDOWING_X11 -#include -#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)); -} diff --git a/linux/my_application.h b/linux/my_application.h deleted file mode 100755 index 72271d5..0000000 --- a/linux/my_application.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FLUTTER_MY_APPLICATION_H_ -#define FLUTTER_MY_APPLICATION_H_ - -#include - -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_ diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index cda4555..c18d8f2 100755 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -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")) } diff --git a/pubspec.lock b/pubspec.lock old mode 100755 new mode 100644 index e438776..3652fdb --- a/pubspec.lock +++ b/pubspec.lock @@ -5,96 +5,98 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab" + sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f url: "https://pub.dev" source: hosted - version: "76.0.0" + version: "85.0.0" _flutterfire_internals: dependency: transitive description: name: _flutterfire_internals - sha256: daa1d780fdecf8af925680c06c86563cdd445deea995d5c9176f1302a2b10bbe + sha256: ff0a84a2734d9e1089f8aedd5c0af0061b82fb94e95260d943404e0ef2134b11 url: "https://pub.dev" source: hosted - version: "1.3.48" - _macros: - dependency: transitive - description: dart - source: sdk - version: "0.3.3" + version: "1.3.59" analyzer: dependency: transitive description: name: analyzer - sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e" + sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" url: "https://pub.dev" source: hosted - version: "6.11.0" + version: "7.7.1" animated_text_kit: dependency: "direct main" description: name: animated_text_kit - sha256: "37392a5376c9a1a503b02463c38bc0342ef814ddbb8f9977bc90f2a84b22fa92" + sha256: adba517adb7e6adeb1eb5e1c8a147dd7bc664dfdf2f5e92226b572a91393a93d url: "https://pub.dev" source: hosted - version: "4.2.2" + version: "4.2.3" archive: dependency: transitive description: name: archive - sha256: "6199c74e3db4fbfbd04f66d739e72fe11c8a8957d5f219f1f4482dbde6420b5a" + sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.0.7" args: dependency: transitive description: name: args - sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.7.0" asn1lib: dependency: transitive description: name: asn1lib - sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5" + sha256: "9a8f69025044eb466b9b60ef3bc3ac99b4dc6c158ae9c56d25eeccf5bc56d024" url: "https://pub.dev" source: hosted - version: "1.5.8" + version: "1.6.5" async: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" audio_session: dependency: transitive description: name: audio_session - sha256: b2a26ba8b7efa1790d6460e82971fde3e398cfbe2295df9dea22f3499d2c12a7 + sha256: "2b7fff16a552486d078bfc09a8cde19f426dc6d6329262b684182597bec5b1ac" url: "https://pub.dev" source: hosted - version: "0.1.23" - background_location: + version: "0.1.25" + battery_plus: dependency: "direct main" description: - path: "." - ref: master - resolved-ref: f90f62aad5481677a832486432ccbf84da3b6861 - url: "https://github.com/dharmik-dalwadi-seaflux/background_location.git" - source: git - version: "0.13.0" + name: battery_plus + sha256: fb794c34cee2e4ea31005fb17ff15e1d904951ec7f15eedead741021870ee834 + url: "https://pub.dev" + source: hosted + version: "6.2.2" + battery_plus_platform_interface: + dependency: transitive + description: + name: battery_plus_platform_interface + sha256: e8342c0f32de4b1dfd0223114b6785e48e579bfc398da9471c9179b907fa4910 + url: "https://pub.dev" + source: hosted + version: "2.0.1" 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" bubble_head: dependency: "direct main" description: @@ -106,10 +108,10 @@ packages: dependency: transitive description: name: build - sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0 + sha256: "51dc711996cbf609b90cbe5b335bbce83143875a9d58e4b5c6d3c4f684d3dda7" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.5.4" build_config: dependency: transitive description: @@ -122,34 +124,34 @@ packages: dependency: transitive description: name: build_daemon - sha256: "294a2edaf4814a378725bfe6358210196f5ea37af89ecd81bfa32960113d4948" + sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" url: "https://pub.dev" source: hosted - version: "4.0.3" + version: "4.0.4" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: "99d3980049739a985cf9b21f30881f46db3ebc62c5b8d5e60e27440876b1ba1e" + sha256: ee4257b3f20c0c90e72ed2b57ad637f694ccba48839a821e87db762548c22a62 url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.5.4" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "74691599a5bc750dc96a6b4bfd48f7d9d66453eab04c7f4063134800d6a5c573" + sha256: "382a4d649addbfb7ba71a3631df0ec6a45d5ab9b098638144faf27f02778eb53" url: "https://pub.dev" source: hosted - version: "2.4.14" + version: "2.5.4" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021" + sha256: "85fbbb1036d576d966332a3f5ce83f2ce66a40bea1a94ad2d5fc29a19a0d3792" url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "9.1.2" built_collection: dependency: transitive description: @@ -162,10 +164,10 @@ packages: dependency: transitive description: name: built_value - sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2" + sha256: "0b1b12a0a549605e5f04476031cd0bc91ead1d7c8e830773a18ee54179b3cb62" url: "https://pub.dev" source: hosted - version: "8.9.3" + version: "8.11.0" cached_network_image: dependency: transitive description: @@ -202,34 +204,34 @@ packages: dependency: "direct main" description: name: camera - sha256: "26ff41045772153f222ffffecba711a206f670f5834d40ebf5eed3811692f167" + sha256: d6ec2cbdbe2fa8f5e0d07d8c06368fe4effa985a4a5ddade9cc58a8cd849557d url: "https://pub.dev" source: hosted - version: "0.11.0+2" + version: "0.11.2" camera_android_camerax: dependency: transitive description: name: camera_android_camerax - sha256: "2985b8e5fca62709ebb2150962b1dae0444ba0a112be888ccf21e8371a1406d9" + sha256: "4b6c1bef4270c39df96402c4d62f2348c3bb2bbaefd0883b9dbd58f426306ad0" url: "https://pub.dev" source: hosted - version: "0.6.10+1" + version: "0.6.19" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: "2e4c568f70e406ccb87376bc06b53d2f5bebaab71e2fbcc1a950e31449381bcf" + sha256: cabc6cbdeadca9cbcac178110c9d5e87bde5c646c3b8c9c4c2747fc500a12432 url: "https://pub.dev" source: hosted - version: "0.9.17+5" + version: "0.9.20+5" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: b3ede1f171532e0d83111fe0980b46d17f1aa9788a07a2fbed07366bbdbb9061 + sha256: "2f757024a48696ff4814a789b0bd90f5660c0fb25f393ab4564fb483327930e2" url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "2.10.0" camera_web: dependency: transitive description: @@ -242,26 +244,26 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" checked_yaml: dependency: transitive description: name: checked_yaml - sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "2.0.4" chewie: dependency: transitive description: name: chewie - sha256: "335df378c025588aef400c704bd71f0daea479d4cd57c471c88c056c1144e7cd" + sha256: "19b93a1e60e4ba640a792208a6543f1c7d5b124d011ce0199e2f18802199d984" url: "https://pub.dev" source: hosted - version: "1.8.5" + version: "1.12.1" cli_util: dependency: transitive description: @@ -274,10 +276,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -290,10 +292,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" convert: dependency: transitive description: @@ -338,50 +340,50 @@ packages: dependency: transitive description: name: dart_style - sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" + sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" url: "https://pub.dev" source: hosted - version: "2.3.7" + version: "3.1.1" dbus: dependency: transitive description: name: dbus - sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" + sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" url: "https://pub.dev" source: hosted - version: "0.7.10" + version: "0.7.11" device_info_plus: dependency: "direct main" description: name: device_info_plus - sha256: "72d146c6d7098689ff5c5f66bcf593ac11efc530095385356e131070333e64da" + sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a" url: "https://pub.dev" source: hosted - version: "11.3.0" + version: "11.5.0" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface - sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2" + sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f url: "https://pub.dev" source: hosted - version: "7.0.2" + version: "7.0.3" dio: dependency: "direct main" description: name: dio - sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260" + sha256: "253a18bbd4851fecba42f7343a1df3a9a4c1d31a2c1b37e221086b4fa8c8dbc9" url: "https://pub.dev" source: hosted - version: "5.7.0" + version: "5.8.0+1" dio_web_adapter: dependency: transitive description: name: dio_web_adapter - sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8" + sha256: "7586e476d70caecaf1686d21eee7247ea43ef5c345eab9e0cc3583ff13378d78" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.1" encrypt: dependency: "direct main" description: @@ -394,18 +396,18 @@ packages: dependency: "direct main" description: name: envied - sha256: "129a0dbf32b90344fa2e9d6943569fdec8f17904e66161e0a1f09ee3416508ae" + sha256: a4e2b1d0caa479b5d61332ae516518c175a6d09328a35a0bc0a53894cc5d7e4d url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.1.1" envied_generator: dependency: "direct dev" description: name: envied_generator - sha256: "76aec98907872ce8488f021e68d213bd0d9bf224eb393a094be1708cc3180d41" + sha256: "894f6c5eb624c60a1ce6f642b6fd7ec68bc3440aa6f1881837aa9acbbeade0c8" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.1.1" equatable: dependency: transitive description: @@ -418,18 +420,18 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" ffi: dependency: transitive description: name: ffi - sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" file: dependency: transitive description: @@ -450,10 +452,10 @@ packages: dependency: transitive description: name: file_selector_macos - sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc" + sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711" url: "https://pub.dev" source: hosted - version: "0.9.4+2" + version: "0.9.4+3" file_selector_platform_interface: dependency: transitive description: @@ -466,82 +468,82 @@ packages: dependency: transitive description: name: file_selector_windows - sha256: "8f5d2f6590d51ecd9179ba39c64f722edc15226cc93dcc8698466ad36a4a85a4" + sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" url: "https://pub.dev" source: hosted - version: "0.9.3+3" + version: "0.9.3+4" firebase_auth: dependency: "direct main" description: name: firebase_auth - sha256: "03483af6e67b7c4b696ca9386989a6cd5593569e1ac5af6907ea5f7fd9c16d8b" + sha256: "0fed2133bee1369ee1118c1fef27b2ce0d84c54b7819a2b17dada5cfec3b03ff" url: "https://pub.dev" source: hosted - version: "5.3.4" + version: "5.7.0" firebase_auth_platform_interface: dependency: transitive description: name: firebase_auth_platform_interface - sha256: "3e1409f48c48930635705b1237ebbdee8c54c19106a0a4fb321dbb4b642820c4" + sha256: "871c9df4ec9a754d1a793f7eb42fa3b94249d464cfb19152ba93e14a5966b386" url: "https://pub.dev" source: hosted - version: "7.4.10" + version: "7.7.3" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: d83fe95c44d73c9c29b006ac7df3aa5e1b8ce92b62edc44e8f86250951fe2cd0 + sha256: d9ada769c43261fd1b18decf113186e915c921a811bd5014f5ea08f4cf4bc57e url: "https://pub.dev" source: hosted - version: "5.13.5" + version: "5.15.3" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "15d761b95dfa2906dfcc31b7fc6fe293188533d1a3ffe78389ba9e69bd7fdbde" + sha256: "7be63a3f841fc9663342f7f3a011a42aef6a61066943c90b1c434d79d5c995c5" url: "https://pub.dev" source: hosted - version: "3.9.0" + version: "3.15.2" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: d7253d255ff10f85cfd2adaba9ac17bae878fa3ba577462451163bd9f1d1f0bf + sha256: "5dbc900677dcbe5873d22ad7fbd64b047750124f1f9b7ebe2a33b9ddccc838eb" url: "https://pub.dev" source: hosted - version: "5.4.0" + version: "6.0.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: fbc008cf390d909b823763064b63afefe9f02d8afdb13eb3f485b871afee956b + sha256: "0ed0dc292e8f9ac50992e2394e9d336a0275b6ae400d64163fdf0a8a8b556c37" url: "https://pub.dev" source: hosted - version: "2.19.0" + version: "2.24.1" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: "151a3ee68736abf293aab66d1317ade53c88abe1db09c75a0460aebf7767bbdf" + sha256: "60be38574f8b5658e2f22b7e311ff2064bea835c248424a383783464e8e02fcc" url: "https://pub.dev" source: hosted - version: "15.1.6" + version: "15.2.10" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: f331ee51e40c243f90cc7bc059222dfec4e5df53125b08d31fb28961b00d2a9d + sha256: "685e1771b3d1f9c8502771ccc9f91485b376ffe16d553533f335b9183ea99754" url: "https://pub.dev" source: hosted - version: "4.5.49" + version: "4.6.10" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: efaf3fdc54cd77e0eedb8e75f7f01c808828c64d052ddbf94d3009974e47d30f + sha256: "0d1be17bc89ed3ff5001789c92df678b2e963a51b6fa2bdb467532cc9dbed390" url: "https://pub.dev" source: hosted - version: "3.9.5" + version: "3.10.10" fixnum: dependency: transitive description: @@ -554,10 +556,10 @@ packages: dependency: "direct main" description: name: fl_chart - sha256: c724234b05e378383e958f3e82ca84a3e1e3c06a0898462044dd8a24b1ee9864 + sha256: "5276944c6ffc975ae796569a826c38a62d2abcf264e26b88fa6f482e107f4237" url: "https://pub.dev" source: hosted - version: "0.70.0" + version: "0.70.2" flutter: dependency: "direct main" description: flutter @@ -607,26 +609,26 @@ packages: dependency: "direct main" description: name: flutter_image_compress - sha256: "45a3071868092a61b11044c70422b04d39d4d9f2ef536f3c5b11fb65a1e7dd90" + sha256: "51d23be39efc2185e72e290042a0da41aed70b14ef97db362a6b5368d0523b27" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.0" flutter_image_compress_common: dependency: transitive description: name: flutter_image_compress_common - sha256: "7f79bc6c8a363063620b4e372fa86bc691e1cb28e58048cd38e030692fbd99ee" + sha256: c5c5d50c15e97dd7dc72ff96bd7077b9f791932f2076c5c5b6c43f2c88607bfb url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" flutter_image_compress_macos: dependency: transitive description: name: flutter_image_compress_macos - sha256: "26df6385512e92b3789dc76b613b54b55c457a7f1532e59078b04bf189782d47" + sha256: "20019719b71b743aba0ef874ed29c50747461e5e8438980dfa5c2031898f7337" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.3" flutter_image_compress_ohos: dependency: transitive description: @@ -647,10 +649,10 @@ packages: dependency: transitive description: name: flutter_image_compress_web - sha256: f02fe352b17f82b72f481de45add240db062a2585850bea1667e82cc4cd6c311 + sha256: b9b141ac7c686a2ce7bb9a98176321e1182c9074650e47bb140741a44b6f5a96 url: "https://pub.dev" source: hosted - version: "0.1.4+1" + version: "0.1.5" flutter_inappwebview: dependency: transitive description: @@ -719,10 +721,10 @@ packages: dependency: "direct main" description: name: flutter_launcher_icons - sha256: "31cd0885738e87c72d6f055564d37fabcdacee743b396b78c7636c169cac64f5" + sha256: "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7" url: "https://pub.dev" source: hosted - version: "0.14.2" + version: "0.14.4" flutter_lints: dependency: "direct dev" description: @@ -782,10 +784,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "615a505aef59b151b46bbeef55b36ce2b6ed299d160c51d84281946f0aa0ce0e" + sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e url: "https://pub.dev" source: hosted - version: "2.0.24" + version: "2.0.28" flutter_rating_bar: dependency: "direct main" description: @@ -798,26 +800,26 @@ packages: dependency: "direct main" description: name: flutter_secure_storage - sha256: "165164745e6afb5c0e3e3fcc72a012fb9e58496fb26ffb92cf22e16a821e85d0" + sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" url: "https://pub.dev" source: hosted - version: "9.2.2" + version: "9.2.4" flutter_secure_storage_linux: dependency: transitive description: name: flutter_secure_storage_linux - sha256: "4d91bfc23047422cbcd73ac684bc169859ee766482517c22172c86596bf1464b" + sha256: be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.3" flutter_secure_storage_macos: dependency: transitive description: name: flutter_secure_storage_macos - sha256: "1693ab11121a5f925bbea0be725abfcfbbcf36c1e29e571f84a0c0f436147a81" + sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" flutter_secure_storage_platform_interface: dependency: transitive description: @@ -854,18 +856,18 @@ packages: dependency: "direct main" description: name: flutter_stripe - sha256: "06d7d8ac853470b7c9a9ed81f9fccafaf35f417a151e1b7ddcded56113aadf6f" + sha256: a474b283f4b07e8973687514bf48762e618073b0d6b7acc45cea9a60466d4f8c url: "https://pub.dev" source: hosted - version: "11.3.0" + version: "11.5.0" flutter_svg: dependency: transitive description: name: flutter_svg - sha256: "54900a1a1243f3c4a5506d853a2b5c2dbc38d5f27e52a52618a8054401431123" + sha256: cd57f7969b4679317c17af6fd16ee233c1e60a82ed209d8a475c54fd6fd6f845 url: "https://pub.dev" source: hosted - version: "2.0.16" + version: "2.2.0" flutter_test: dependency: "direct dev" description: flutter @@ -875,10 +877,10 @@ packages: dependency: "direct main" description: name: flutter_tts - sha256: cbec5f0447223e1b4c47f893c7f8ef663ac582120c147e4a1e2cade7f2e8b0c8 + sha256: bdf2fc4483e74450dc9fc6fe6a9b6a5663e108d4d0dad3324a22c8e26bf48af4 url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "4.2.3" flutter_web_plugins: dependency: transitive description: flutter @@ -960,66 +962,66 @@ packages: dependency: transitive description: name: fwfh_webview - sha256: c0a8b664b642f40f4c252a0ab4e72c22dcd97c7fb3a7e50a6b4bdb6f63afca19 + sha256: "06595c7ca945c8d8522864a764e21abbcf50096852f8d256e45c0fa101b6fbc6" url: "https://pub.dev" source: hosted - version: "0.15.3" + version: "0.15.5" geolocator: dependency: "direct main" description: name: geolocator - sha256: d2ec66329cab29cb297d51d96c067d457ca519dca8589665fa0b82ebacb7dbe4 + sha256: f62bcd90459e63210bbf9c35deb6a51c521f992a78de19a1fe5c11704f9530e2 url: "https://pub.dev" source: hosted - version: "13.0.2" + version: "13.0.4" geolocator_android: dependency: transitive description: name: geolocator_android - sha256: "7aefc530db47d90d0580b552df3242440a10fe60814496a979aa67aa98b1fd47" + sha256: fcb1760a50d7500deca37c9a666785c047139b5f9ee15aa5469fae7dbbe3170d url: "https://pub.dev" source: hosted - version: "4.6.1" + version: "4.6.2" geolocator_apple: dependency: transitive description: name: geolocator_apple - sha256: "6154ea2682563f69fc0125762ed7e91e7ed85d0b9776595653be33918e064807" + sha256: dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22 url: "https://pub.dev" source: hosted - version: "2.3.8+1" + version: "2.3.13" geolocator_platform_interface: dependency: transitive description: name: geolocator_platform_interface - sha256: "386ce3d9cce47838355000070b1d0b13efb5bc430f8ecda7e9238c8409ace012" + sha256: "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67" url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "4.2.6" geolocator_web: dependency: transitive description: name: geolocator_web - sha256: "2ed69328e05cd94e7eb48bb0535f5fc0c0c44d1c4fa1e9737267484d05c29b5e" + sha256: b1ae9bdfd90f861fde8fd4f209c37b953d65e92823cb73c7dee1fa021b06f172 url: "https://pub.dev" source: hosted - version: "4.1.1" + version: "4.1.3" geolocator_windows: dependency: transitive description: name: geolocator_windows - sha256: "53da08937d07c24b0d9952eb57a3b474e29aae2abf9dd717f7e1230995f13f0e" + sha256: "175435404d20278ffd220de83c2ca293b73db95eafbdc8131fe8609be1421eb6" url: "https://pub.dev" source: hosted - version: "0.2.3" + version: "0.2.5" get: dependency: "direct main" description: name: get - sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e + sha256: c79eeb4339f1f3deffd9ec912f8a923834bec55f7b49c9e882b8fef2c139d425 url: "https://pub.dev" source: hosted - version: "4.6.6" + version: "4.7.2" get_storage: dependency: "direct main" description: @@ -1032,10 +1034,10 @@ packages: dependency: transitive description: name: glob - sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" google_fonts: dependency: "direct main" description: @@ -1048,10 +1050,10 @@ packages: dependency: transitive description: name: google_identity_services_web - sha256: "55580f436822d64c8ff9a77e37d61f5fb1e6c7ec9d632a43ee324e2a05c3c6c9" + sha256: "5d187c46dc59e02646e10fe82665fc3884a9b71bc1c90c2b8b749316d33ee454" url: "https://pub.dev" source: hosted - version: "0.3.3" + version: "0.3.3+1" google_maps: dependency: transitive description: @@ -1064,42 +1066,42 @@ packages: dependency: "direct main" description: name: google_maps_flutter - sha256: "621125e35e81ca39ef600e45243d2be93167e61def72bc7207b0c4a635c58506" + sha256: e1805e5a5885bd14a1c407c59229f478af169bf4d04388586b19f53145a5db3a url: "https://pub.dev" source: hosted - version: "2.10.1" + version: "2.12.3" google_maps_flutter_android: dependency: transitive description: name: google_maps_flutter_android - sha256: bccf64ccbb2ea672dc62a61177b315a340af86b0228564484b023657544a3fd5 + sha256: "67745f7850655faa8a596606b627fece63f3011078eaa0c151a4774568c23ac4" url: "https://pub.dev" source: hosted - version: "2.14.11" + version: "2.17.0" google_maps_flutter_ios: dependency: transitive description: name: google_maps_flutter_ios - sha256: "6f798adb0aa1db5adf551f2e39e24bd06c8c0fbe4de912fb2d9b5b3f48147b02" + sha256: d03678415da9de8ce7208c674b264fc75946f326e696b4b7f84c80920fc58df6 url: "https://pub.dev" source: hosted - version: "2.13.2" + version: "2.15.4" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface - sha256: a951981c22d790848efb9f114f81794945bc5c06bc566238a419a92f110af6cb + sha256: f8293f072ed8b068b092920a72da6693aa8b3d62dc6b5c5f0bc44c969a8a776c url: "https://pub.dev" source: hosted - version: "2.9.5" + version: "2.12.1" google_maps_flutter_web: dependency: transitive description: name: google_maps_flutter_web - sha256: ff39211bd25d7fad125d19f757eba85bd154460907cd4d135e07e3d0f98a4130 + sha256: ce2cac714e5462bf761ff2fdfc3564c7e5d7ed0578268dccb0a54dbdb1e6214e url: "https://pub.dev" source: hosted - version: "0.5.10" + version: "0.5.12+2" google_polyline_algorithm: dependency: "direct main" description: @@ -1112,42 +1114,42 @@ packages: dependency: "direct main" description: name: google_sign_in - sha256: fad6ddc80c427b0bba705f2116204ce1173e09cf299f85e053d57a55e5b2dd56 + sha256: d0a2c3bcb06e607bb11e4daca48bd4b6120f0bbc4015ccebbe757d24ea60ed2a url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.3.0" google_sign_in_android: dependency: transitive description: name: google_sign_in_android - sha256: "3b96f9b6cf61915f73cbe1218a192623e296a9b8b31965702503649477761e36" + sha256: d5e23c56a4b84b6427552f1cf3f98f716db3b1d1a647f16b96dbb5b93afa2805 url: "https://pub.dev" source: hosted - version: "6.1.34" + version: "6.2.1" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: "83f015169102df1ab2905cf8abd8934e28f87db9ace7a5fa676998842fed228a" + sha256: "102005f498ce18442e7158f6791033bbc15ad2dcc0afa4cf4752e2722a516c96" url: "https://pub.dev" source: hosted - version: "5.7.8" + version: "5.9.0" google_sign_in_platform_interface: dependency: transitive description: name: google_sign_in_platform_interface - sha256: "1f6e5787d7a120cc0359ddf315c92309069171306242e181c09472d1b00a2971" + sha256: "5f6f79cf139c197261adb6ac024577518ae48fdff8e53205c5373b5f6430a8aa" url: "https://pub.dev" source: hosted - version: "2.4.5" + version: "2.5.0" google_sign_in_web: dependency: transitive description: name: google_sign_in_web - sha256: ada595df6c30cead48e66b1f3a050edf0c5cf2ba60c185d69690e08adcc6281b + sha256: "460547beb4962b7623ac0fb8122d6b8268c951cf0b646dd150d60498430e4ded" url: "https://pub.dev" source: hosted - version: "0.12.4+3" + version: "0.12.4+4" googleapis_auth: dependency: "direct main" description: @@ -1168,18 +1170,18 @@ packages: dependency: transitive description: name: html - sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec" + sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" url: "https://pub.dev" source: hosted - version: "0.15.5" + version: "0.15.6" http: dependency: "direct main" description: name: http - sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 + sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.4.0" http_auth: dependency: transitive description: @@ -1200,18 +1202,18 @@ packages: dependency: transitive description: name: http_parser - sha256: "76d306a1c3afb33fe82e2bbacad62a61f409b5634c915fceb0d799de1a913360" + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" url: "https://pub.dev" source: hosted - version: "4.1.1" + version: "4.1.2" image: dependency: "direct main" description: name: image - sha256: "8346ad4b5173924b5ddddab782fc7d8a6300178c8b1dc427775405a01701c4a6" + sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" url: "https://pub.dev" source: hosted - version: "4.5.2" + version: "4.5.4" image_cropper: dependency: "direct main" description: @@ -1224,18 +1226,18 @@ packages: dependency: transitive description: name: image_cropper_for_web - sha256: "34256c8fb7fcb233251787c876bb37271744459b593a948a2db73caa323034d0" + sha256: fd81ebe36f636576094377aab32673c4e5d1609b32dec16fad98d2b71f1250a9 url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.1.0" image_cropper_platform_interface: dependency: transitive description: name: image_cropper_platform_interface - sha256: e8e9d2ca36360387aee39295ce49029362ae4df3071f23e8e71f2b81e40b7531 + sha256: "6ca6b81769abff9a4dcc3bbd3d75f5dfa9de6b870ae9613c8cd237333a4283af" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.1.0" image_picker: dependency: "direct main" description: @@ -1248,10 +1250,10 @@ packages: dependency: transitive description: name: image_picker_android - sha256: fa8141602fde3f7e2f81dbf043613eb44dfa325fa0bcf93c0f142c9f7a2c193e + sha256: "6fae381e6af2bbe0365a5e4ce1db3959462fa0c4d234facf070746024bb80c8d" url: "https://pub.dev" source: hosted - version: "0.8.12+18" + version: "0.8.12+24" image_picker_for_web: dependency: transitive description: @@ -1264,34 +1266,34 @@ packages: dependency: transitive description: name: image_picker_ios - sha256: "4f0568120c6fcc0aaa04511cb9f9f4d29fc3d0139884b1d06be88dcec7641d6b" + sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100" url: "https://pub.dev" source: hosted - version: "0.8.12+1" + version: "0.8.12+2" image_picker_linux: dependency: transitive description: name: image_picker_linux - sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" + sha256: "34a65f6740df08bbbeb0a1abd8e6d32107941fd4868f67a507b25601651022c9" url: "https://pub.dev" source: hosted - version: "0.2.1+1" + version: "0.2.1+2" image_picker_macos: dependency: transitive description: name: image_picker_macos - sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" + sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1" url: "https://pub.dev" source: hosted - version: "0.2.1+1" + version: "0.2.1+2" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "9ec26d410ff46f483c5519c29c02ef0e02e13a543f882b152d4bfd2f06802f80" + sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.10.1" image_picker_windows: dependency: transitive description: @@ -1320,10 +1322,10 @@ packages: dependency: "direct main" description: name: jailbreak_root_detection - sha256: ee98f5e69b43c758ee1779204b0926a09f0371eebe1462b876fb6a8bd130cbe5 + sha256: c611229940a09785bd686364e92a40b07724926d2496c931527805101eb3da86 url: "https://pub.dev" source: hosted - version: "1.1.5" + version: "1.1.6" js: dependency: transitive description: @@ -1344,26 +1346,26 @@ packages: dependency: "direct main" description: name: just_audio - sha256: a49e7120b95600bd357f37a2bb04cd1e88252f7cdea8f3368803779b925b1049 + sha256: f978d5b4ccea08f267dae0232ec5405c1b05d3f3cd63f82097ea46c015d5c09e url: "https://pub.dev" source: hosted - version: "0.9.42" + version: "0.9.46" just_audio_platform_interface: dependency: transitive description: name: just_audio_platform_interface - sha256: "0243828cce503c8366cc2090cefb2b3c871aa8ed2f520670d76fd47aa1ab2790" + sha256: "4cd94536af0219fa306205a58e78d67e02b0555283c1c094ee41e402a14a5c4a" url: "https://pub.dev" source: hosted - version: "4.3.0" + version: "4.5.0" just_audio_web: dependency: transitive description: name: just_audio_web - sha256: "9a98035b8b24b40749507687520ec5ab404e291d2b0937823ff45d92cb18d448" + sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663" url: "https://pub.dev" source: hosted - version: "0.4.13" + version: "0.4.16" jwt_decoder: dependency: "direct main" description: @@ -1376,18 +1378,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: @@ -1408,10 +1410,10 @@ packages: dependency: "direct main" description: name: live_activities - sha256: fd5414cca16352add9bae9b949e7b5d84ca219a1eb298772174db1b3a2be4b77 + sha256: f539d1b3458baa87333b16d2e7c90710d1131ba975a6dc21cdad28974bf16408 url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.1" local_auth: dependency: "direct main" description: @@ -1424,18 +1426,18 @@ packages: dependency: transitive description: name: local_auth_android - sha256: "6763aaf8965f21822624cb2fd3c03d2a8b3791037b5efb0fe4b13e110f5afc92" + sha256: "82b2bdeee2199a510d3b7716121e96a6609da86693bb0863edd8566355406b79" url: "https://pub.dev" source: hosted - version: "1.0.46" + version: "1.0.50" local_auth_darwin: dependency: transitive description: name: local_auth_darwin - sha256: "5c5127061107278ab4cafa1ac51b3b6760282bf1a2abf011270908a429d1634b" + sha256: "25163ce60a5a6c468cf7a0e3dc8a165f824cabc2aa9e39a5e9fc5c2311b7686f" url: "https://pub.dev" source: hosted - version: "1.4.2" + version: "1.5.0" local_auth_platform_interface: dependency: transitive description: @@ -1456,26 +1458,26 @@ packages: dependency: "direct main" description: name: location - sha256: c2c4304071ec860525d5c50d142410072f8620c1d9f74874811af2e804e1a9c8 + sha256: b080053c181c7d152c43dd576eec6436c40e25f326933051c330da563ddd5333 url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "8.0.1" location_platform_interface: dependency: transitive description: name: location_platform_interface - sha256: a3404ea6d74e89b121630be62ed8edcc7b39fd108bd19805d0ae55c397135dd7 + sha256: ca8700bb3f6b1e8b2afbd86bd78b2280d116c613ca7bfa1d4d7b64eba357d749 url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.0.1" location_web: dependency: transitive description: name: location_web - sha256: "744bdff53dc455a2dc9a34474c49cde364d4fbef2aee009f8b0b4b68570c27a1" + sha256: b8e3add5efe0d65c5e692b7a135d80a4015c580d3ea646fa71973e97668dd868 url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.0.1" logging: dependency: transitive description: @@ -1484,22 +1486,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" - macros: - dependency: transitive - description: - name: macros - sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656" - url: "https://pub.dev" - source: hosted - version: "0.1.3-main.0" matcher: 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: @@ -1512,18 +1506,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" mime: dependency: transitive description: name: mime - sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" url: "https://pub.dev" source: hosted - version: "1.0.6" + version: "2.0.0" nested: dependency: transitive description: @@ -1544,34 +1538,34 @@ packages: dependency: transitive description: name: package_config - sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67" + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.2.0" package_info_plus: dependency: "direct main" description: name: package_info_plus - sha256: "70c421fe9d9cc1a9a7f3b05ae56befd469fe4f8daa3b484823141a55442d858d" + sha256: "7976bfe4c583170d6cdc7077e3237560b364149fcd268b5f53d95a991963b191" url: "https://pub.dev" source: hosted - version: "8.1.2" + version: "8.3.0" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: a5ef9986efc7bf772f2696183a3992615baa76c1ffb1189318dd8803778fb05b + sha256: "6c935fb612dff8e3cc9632c2b301720c77450a126114126ffaafe28d2e87956c" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.2.0" path: dependency: "direct main" description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_parsing: dependency: transitive description: @@ -1592,10 +1586,10 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2" + sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 url: "https://pub.dev" source: hosted - version: "2.2.15" + version: "2.2.17" path_provider_foundation: dependency: transitive description: @@ -1632,26 +1626,26 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: "18bf33f7fefbd812f37e72091a15575e72d5318854877e0e4035a24ac1113ecb" + sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849" url: "https://pub.dev" source: hosted - version: "11.3.1" + version: "11.4.0" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: "71bbecfee799e65aff7c744761a57e817e73b738fedf62ab7afd5593da21f9f1" + sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc url: "https://pub.dev" source: hosted - version: "12.0.13" + version: "12.1.0" permission_handler_apple: dependency: transitive description: name: permission_handler_apple - sha256: e6f6d73b12438ef13e648c4ae56bd106ec60d17e90a59c4545db6781229082a0 + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 url: "https://pub.dev" source: hosted - version: "9.4.5" + version: "9.4.7" permission_handler_html: dependency: transitive description: @@ -1664,10 +1658,10 @@ packages: dependency: transitive description: name: permission_handler_platform_interface - sha256: e9c8eadee926c4532d0305dff94b85bf961f16759c3af791486613152af4b4f9 + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 url: "https://pub.dev" source: hosted - version: "4.2.3" + version: "4.3.0" permission_handler_windows: dependency: transitive description: @@ -1680,10 +1674,10 @@ packages: dependency: transitive description: name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.1.0" platform: dependency: transitive description: @@ -1720,34 +1714,34 @@ packages: dependency: transitive description: name: posix - sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a + sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" url: "https://pub.dev" source: hosted - version: "6.0.1" + version: "6.0.3" provider: dependency: transitive description: name: provider - sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c + sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84" url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "6.1.5" pub_semver: dependency: transitive description: name: pub_semver - sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.2.0" pubspec_parse: dependency: transitive description: name: pubspec_parse - sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0" + sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.5.0" quick_actions: dependency: "direct main" description: @@ -1760,10 +1754,10 @@ packages: dependency: transitive description: name: quick_actions_android - sha256: "926e50d6f879287b34d21934e6c9457f0d851f554179f2a9e8136c4acd1b7062" + sha256: "8d88e90a236ffe92f1026ecc3b85acfefedffccb0c1be1c94c1c0298e8483ad8" url: "https://pub.dev" source: hosted - version: "1.0.18" + version: "1.0.21" quick_actions_ios: dependency: transitive description: @@ -1792,18 +1786,18 @@ packages: dependency: "direct main" description: name: record - sha256: "8cb57763d954624fbc673874930c6f1ceca3baaf9bfee24b25da6fd451362394" + sha256: "2e3d56d196abcd69f1046339b75e5f3855b2406fc087e5991f6703f188aa03a6" url: "https://pub.dev" source: hosted - version: "5.2.0" + version: "5.2.1" record_android: dependency: transitive description: name: record_android - sha256: "0b4739a2502fff402b0ac0ff1d6b2740854d116d78e06a4a16b3989821f84446" + sha256: "97d7122455f30de89a01c6c244c839085be6b12abca251fc0e78f67fed73628b" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.3" record_darwin: dependency: transitive description: @@ -1821,7 +1815,7 @@ packages: source: hosted version: "0.7.2" record_platform_interface: - dependency: transitive + dependency: "direct overridden" description: name: record_platform_interface sha256: "8a575828733d4c3cb5983c914696f40db8667eab3538d4c41c50cbb79e722ef4" @@ -1832,18 +1826,18 @@ packages: dependency: transitive description: name: record_web - sha256: "10cb041349024ce4256e11dd35874df26d8b45b800678f2f51fd1318901adc64" + sha256: a12856d0b3dd03d336b4b10d7520a8b3e21649a06a8f95815318feaa8f07adbb url: "https://pub.dev" source: hosted - version: "1.1.4" + version: "1.1.9" record_windows: dependency: transitive description: name: record_windows - sha256: "7bce0ac47454212ca8bfa72791d8b6a951f2fb0d4b953b64443c014227f035b4" + sha256: "85a22fc97f6d73ecd67c8ba5f2f472b74ef1d906f795b7970f771a0914167e99" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.6" rxdart: dependency: transitive description: @@ -1867,14 +1861,22 @@ packages: relative: true source: path version: "1.0.0" - share: + share_plus: dependency: "direct main" description: - name: share - sha256: "97e6403f564ed1051a01534c2fc919cb6e40ea55e60a18ec23cee6e0ce19f4be" + name: share_plus + sha256: b2961506569e28948d75ec346c28775bb111986bb69dc6a20754a457e3d97fa0 url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "11.0.0" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + sha256: "1032d392bc5d2095a77447a805aa3f804d2ae6a4d5eef5e6ebb3bd94c1bc19ef" + url: "https://pub.dev" + source: hosted + version: "6.0.0" shelf: dependency: transitive description: @@ -1887,10 +1889,10 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.0" sign_in_with_apple: dependency: "direct main" description: @@ -1932,18 +1934,18 @@ packages: dependency: transitive description: name: source_gen - sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" + sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "2.0.0" source_span: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" sprintf: dependency: transitive description: @@ -1956,34 +1958,34 @@ packages: dependency: "direct main" description: name: sqflite - sha256: "2d7299468485dca85efeeadf5d38986909c5eb0cd71fd3db2c2f000e6c9454bb" + sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" sqflite_android: dependency: transitive description: name: sqflite_android - sha256: "78f489aab276260cdd26676d2169446c7ecd3484bbd5fead4ca14f3ed4dd9ee3" + sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "761b9740ecbd4d3e66b8916d784e581861fd3c3553eda85e167bc49fdb68f709" + sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b" url: "https://pub.dev" source: hosted - version: "2.5.4+6" + version: "2.5.5" sqflite_darwin: dependency: transitive description: name: sqflite_darwin - sha256: "96a698e2bc82bd770a4d6aab00b42396a7c63d9e33513a56945cbccb594c2474" + sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" sqflite_platform_interface: dependency: transitive description: @@ -1996,18 +1998,18 @@ packages: 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" stream_transform: dependency: transitive description: @@ -2020,66 +2022,66 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" stripe_android: dependency: transitive description: name: stripe_android - sha256: bc919b07ba1560b25a69002f9ca67a5973f12bfb96f78033cf9bd6c561f1aa10 + sha256: a666352e0c20753ecd8feebb5944882bf597167be4f020641266515a495bd55f url: "https://pub.dev" source: hosted - version: "11.3.0" + version: "11.5.0" stripe_ios: dependency: transitive description: name: stripe_ios - sha256: "734a7668babd85a451c8049f0dfa8ca5dc6d80f85600d29732e7fa703dd5ec5e" + sha256: "0f7afed3ac61e544e7525da9b692b23d93e762d56f6c9aa7f77fc6d9a686a65d" url: "https://pub.dev" source: hosted - version: "11.3.0" + version: "11.5.0" stripe_platform_interface: dependency: transitive description: name: stripe_platform_interface - sha256: "5cb987074b6ee199e7dd1b81d189c87583f6eaeb19147ffc8c15bc009596e6ce" + sha256: "23c10f3875da07f85a6196fcb676e64c767ad2d04ec73ba4e941ac797a4ee4d3" url: "https://pub.dev" source: hosted - version: "11.3.0" + version: "11.5.0" synchronized: dependency: transitive description: name: synchronized - sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" + sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 url: "https://pub.dev" source: hosted - version: "3.3.0+3" + version: "3.4.0" 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" timezone: dependency: transitive description: name: timezone - sha256: ffc9d5f4d1193534ef051f9254063fa53d588609418c84299956c3db9383587d + sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 url: "https://pub.dev" source: hosted - version: "0.10.0" + version: "0.10.1" timing: dependency: transitive description: @@ -2096,30 +2098,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + upower: + dependency: transitive + description: + name: upower + sha256: cf042403154751180affa1d15614db7fa50234bc2373cd21c3db666c38543ebf + url: "https://pub.dev" + source: hosted + version: "0.7.0" url_launcher: dependency: "direct main" description: name: url_launcher - sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603" + sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 url: "https://pub.dev" source: hosted - version: "6.3.1" + version: "6.3.2" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193" + sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" url: "https://pub.dev" source: hosted - version: "6.3.14" + version: "6.3.16" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626" + sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" url: "https://pub.dev" source: hosted - version: "6.3.2" + version: "6.3.3" url_launcher_linux: dependency: transitive description: @@ -2148,18 +2158,18 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e" + sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.4.1" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4" + sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "3.1.4" uuid: dependency: transitive description: @@ -2172,26 +2182,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "27d5fefe86fb9aace4a9f8375b56b3c292b64d8c04510df230f849850d912cb7" + sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 url: "https://pub.dev" source: hosted - version: "1.1.15" + version: "1.1.19" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "2430b973a4ca3c4dbc9999b62b8c719a160100dcbae5c819bae0cacce32c9cdb" + sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" url: "https://pub.dev" source: hosted - version: "1.1.12" + version: "1.1.13" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad" + sha256: "557a315b7d2a6dbb0aaaff84d857967ce6bdc96a63dc6ee2a57ce5a6ee5d3331" url: "https://pub.dev" source: hosted - version: "1.1.16" + version: "1.1.17" vector_math: dependency: transitive description: @@ -2204,114 +2214,114 @@ packages: dependency: "direct main" description: name: vibration - sha256: f0af02af2d63132135ae0332a3e54d5de718e214ee94c4f082176ef6ce624a4b + sha256: "3b08a0579c2f9c18d5d78cb5c74f1005f731e02eeca6d72561a2e8059bf98ec3" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.1.0" vibration_platform_interface: dependency: transitive description: name: vibration_platform_interface - sha256: f66b39aab2447038978c16f3d6f77228e49ef5717556e3da02313e044e4a7600 + sha256: "6ffeee63547562a6fef53c05a41d4fdcae2c0595b83ef59a4813b0612cd2bc36" url: "https://pub.dev" source: hosted - version: "0.0.2" + version: "0.0.3" video_player: dependency: "direct main" description: name: video_player - sha256: "4a8c3492d734f7c39c2588a3206707a05ee80cef52e8c7f3b2078d430c84bc17" + sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a" url: "https://pub.dev" source: hosted - version: "2.9.2" + version: "2.10.0" video_player_android: dependency: transitive description: name: video_player_android - sha256: "391e092ba4abe2f93b3e625bd6b6a6ec7d7414279462c1c0ee42b5ab8d0a0898" + sha256: "9d5af2d233ba69df803dcf2f31e66d9a4c6206f2d96178df06b09b0ec3056b39" url: "https://pub.dev" source: hosted - version: "2.7.16" + version: "2.8.9" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: "33224c19775fd244be2d6e3dbd8e1826ab162877bd61123bf71890772119a2b7" + sha256: "9fedd55023249f3a02738c195c906b4e530956191febf0838e37d0dac912f953" url: "https://pub.dev" source: hosted - version: "2.6.5" + version: "2.8.0" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface - sha256: "229d7642ccd9f3dc4aba169609dd6b5f3f443bb4cc15b82f7785fcada5af9bbb" + sha256: cf2a1d29a284db648fd66cbd18aacc157f9862d77d2cc790f6f9678a46c1db5a url: "https://pub.dev" source: hosted - version: "6.2.3" + version: "6.4.0" video_player_web: dependency: transitive description: name: video_player_web - sha256: "881b375a934d8ebf868c7fb1423b2bfaa393a0a265fa3f733079a86536064a10" + sha256: "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.4.0" vm_service: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" wakelock_plus: dependency: "direct main" description: name: wakelock_plus - sha256: "1aeab49f24aec1e5ab417d7cdfc47c7bbcb815353f1840667ffe68c89a0cd2e6" + sha256: a474e314c3e8fb5adef1f9ae2d247e57467ad557fa7483a2b895bc1b421c5678 url: "https://pub.dev" source: hosted - version: "1.2.9" + version: "1.3.2" wakelock_plus_platform_interface: dependency: transitive description: name: wakelock_plus_platform_interface - sha256: "422d1cdbb448079a8a62a5a770b69baa489f8f7ca21aef47800c726d404f9d16" + sha256: e10444072e50dbc4999d7316fd303f7ea53d31c824aa5eb05d7ccbdd98985207 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.3" watcher: dependency: transitive description: name: watcher - sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104" + sha256: "0b7fd4a0bbc4b92641dbf20adfd7e3fd1398fe17102d94b674234563e110088a" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" web: dependency: transitive description: name: web - sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" web_socket: dependency: transitive description: name: web_socket - sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" url: "https://pub.dev" source: hosted - version: "0.1.6" + version: "1.0.1" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.3" webview_flutter: dependency: "direct main" description: @@ -2332,34 +2342,34 @@ packages: dependency: transitive description: name: webview_flutter_platform_interface - sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + sha256: f0dc2dc3a2b1e3a6abdd6801b9355ebfeb3b8f6cde6b9dc7c9235909c4a1f147 url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.13.1" webview_flutter_wkwebview: dependency: transitive description: name: webview_flutter_wkwebview - sha256: b7e92f129482460951d96ef9a46b49db34bd2e1621685de26e9eaafd9674e7eb + sha256: "71523b9048cf510cfa1fd4e0a3fa5e476a66e0884d5df51d59d5023dba237107" url: "https://pub.dev" source: hosted - version: "3.16.3" + version: "3.22.1" win32: dependency: transitive description: name: win32 - sha256: "8b338d4486ab3fbc0ba0db9f9b4f5239b6697fcee427939a40e720cbb9ee0a69" + sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" url: "https://pub.dev" source: hosted - version: "5.9.0" + version: "5.14.0" win32_registry: dependency: transitive description: name: win32_registry - sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852" + sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae" url: "https://pub.dev" source: hosted - version: "1.1.5" + version: "2.1.0" xdg_directories: dependency: transitive description: @@ -2393,5 +2403,5 @@ packages: source: hosted version: "9.1.1" sdks: - dart: ">=3.6.0 <4.0.0" - flutter: ">=3.27.0" + dart: ">=3.8.0 <4.0.0" + flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml index 7199232..41c7dc7 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -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" diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index b21e906..54cc472 100755 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,7 @@ #include "generated_plugin_registrant.h" +#include #include #include #include @@ -16,9 +17,12 @@ #include #include #include +#include #include 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")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index a75a14d..163d6e9 100755 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -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 )