12/22/1
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -5,9 +5,11 @@
|
|||||||
*.swp
|
*.swp
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.atom/
|
.atom/
|
||||||
|
.build/
|
||||||
.buildlog/
|
.buildlog/
|
||||||
.history
|
.history
|
||||||
.svn/
|
.svn/
|
||||||
|
.swiftpm/
|
||||||
migrate_working_dir/
|
migrate_working_dir/
|
||||||
|
|
||||||
# IntelliJ related
|
# IntelliJ related
|
||||||
|
|||||||
@@ -32,12 +32,13 @@ def keystorePropertiesFile = rootProject.file('key.properties')
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
namespace "com.sefer_driver"
|
namespace "com.sefer_driver"
|
||||||
compileSdk 34
|
compileSdk 35
|
||||||
ndkVersion flutter.ndkVersion
|
ndkVersion flutter.ndkVersion
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
targetCompatibility JavaVersion.VERSION_1_8
|
||||||
|
coreLibraryDesugaringEnabled true
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ buildscript {
|
|||||||
// START: FlutterFire Configuration
|
// START: FlutterFire Configuration
|
||||||
classpath 'com.google.gms:google-services:4.4.2'
|
classpath 'com.google.gms:google-services:4.4.2'
|
||||||
// END: FlutterFire Configuration
|
// END: FlutterFire Configuration
|
||||||
classpath 'com.android.tools.build:gradle:8.0.0'
|
classpath 'com.android.tools.build:gradle:8.4.0'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,4 +4,4 @@ distributionBase=GRADLE_USER_HOME
|
|||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip
|
||||||
|
|||||||
BIN
assets/images/7.jpeg
Normal file
BIN
assets/images/7.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 93 KiB |
@@ -37,10 +37,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.18.0"
|
version: "1.19.0"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -63,18 +63,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.5"
|
version: "10.0.7"
|
||||||
leak_tracker_flutter_testing:
|
leak_tracker_flutter_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_flutter_testing
|
name: leak_tracker_flutter_testing
|
||||||
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.5"
|
version: "3.0.8"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -119,7 +119,7 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.99"
|
version: "0.0.0"
|
||||||
source_span:
|
source_span:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -132,10 +132,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stack_trace
|
name: stack_trace
|
||||||
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.11.1"
|
version: "1.12.0"
|
||||||
stream_channel:
|
stream_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -148,10 +148,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: string_scanner
|
name: string_scanner
|
||||||
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.3.0"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -164,10 +164,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.2"
|
version: "0.7.3"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -180,10 +180,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
|
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.2.5"
|
version: "14.3.0"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.3.0 <4.0.0"
|
dart: ">=3.4.0 <4.0.0"
|
||||||
flutter: ">=3.18.0-18.0.pre.54"
|
flutter: ">=3.18.0-18.0.pre.54"
|
||||||
|
|||||||
19
ios/Podfile
19
ios/Podfile
@@ -1,8 +1,6 @@
|
|||||||
# Uncomment this line to define a global platform for your project
|
|
||||||
platform :ios, '14.0'
|
platform :ios, '14.0'
|
||||||
$iOSVersion = '14.0' # or newer version
|
$iOSVersion = '14.0' # or your desired version
|
||||||
|
|
||||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
|
||||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
||||||
|
|
||||||
project 'Runner', {
|
project 'Runner', {
|
||||||
@@ -10,6 +8,7 @@ project 'Runner', {
|
|||||||
'Profile' => :release,
|
'Profile' => :release,
|
||||||
'Release' => :release,
|
'Release' => :release,
|
||||||
}
|
}
|
||||||
|
|
||||||
def flutter_root
|
def flutter_root
|
||||||
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
|
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
|
||||||
unless File.exist?(generated_xcode_build_settings_path)
|
unless File.exist?(generated_xcode_build_settings_path)
|
||||||
@@ -28,24 +27,29 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe
|
|||||||
flutter_ios_podfile_setup
|
flutter_ios_podfile_setup
|
||||||
|
|
||||||
target 'Runner' do
|
target 'Runner' do
|
||||||
use_frameworks!
|
use_frameworks! :linkage => :dynamic
|
||||||
use_modular_headers!
|
pod 'Firebase', :modular_headers => true
|
||||||
|
|
||||||
|
# Explicitly enable modular headers for firebase_messaging and other Firebase-related pods
|
||||||
|
pod 'FirebaseMessaging', :modular_headers => true
|
||||||
|
pod 'FirebaseCore', :modular_headers => true
|
||||||
|
pod 'FirebaseAuth', :modular_headers => true
|
||||||
|
|
||||||
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
||||||
|
|
||||||
target 'RunnerTests' do
|
target 'RunnerTests' do
|
||||||
inherit! :search_paths
|
inherit! :search_paths
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
post_install do |installer|
|
post_install do |installer|
|
||||||
# add these lines:
|
|
||||||
installer.pods_project.build_configurations.each do |config|
|
installer.pods_project.build_configurations.each do |config|
|
||||||
config.build_settings["EXCLUDED_ARCHS[sdk=*]"] = "armv7"
|
config.build_settings["EXCLUDED_ARCHS[sdk=*]"] = "armv7"
|
||||||
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = $iOSVersion
|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = $iOSVersion
|
||||||
end
|
end
|
||||||
|
|
||||||
installer.pods_project.targets.each do |target|
|
installer.pods_project.targets.each do |target|
|
||||||
flutter_additional_ios_build_settings(target)
|
flutter_additional_ios_build_settings(target)
|
||||||
# add these lines:
|
|
||||||
target.build_configurations.each do |config|
|
target.build_configurations.each do |config|
|
||||||
if Gem::Version.new($iOSVersion) > Gem::Version.new(config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'])
|
if Gem::Version.new($iOSVersion) > Gem::Version.new(config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'])
|
||||||
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = $iOSVersion
|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = $iOSVersion
|
||||||
@@ -53,4 +57,3 @@ post_install do |installer|
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
408
ios/Podfile.lock
408
ios/Podfile.lock
@@ -1,9 +1,9 @@
|
|||||||
PODS:
|
PODS:
|
||||||
- AppAuth (1.7.5):
|
- AppAuth (1.7.6):
|
||||||
- AppAuth/Core (= 1.7.5)
|
- AppAuth/Core (= 1.7.6)
|
||||||
- AppAuth/ExternalUserAgent (= 1.7.5)
|
- AppAuth/ExternalUserAgent (= 1.7.6)
|
||||||
- AppAuth/Core (1.7.5)
|
- AppAuth/Core (1.7.6)
|
||||||
- AppAuth/ExternalUserAgent (1.7.5):
|
- AppAuth/ExternalUserAgent (1.7.6):
|
||||||
- AppAuth/Core
|
- AppAuth/Core
|
||||||
- audio_session (0.0.1):
|
- audio_session (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
@@ -13,53 +13,81 @@ PODS:
|
|||||||
- Flutter
|
- Flutter
|
||||||
- device_info_plus (0.0.1):
|
- device_info_plus (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- Firebase/Auth (10.28.0):
|
- Firebase (11.4.0):
|
||||||
|
- Firebase/Core (= 11.4.0)
|
||||||
|
- Firebase/Auth (11.4.0):
|
||||||
- Firebase/CoreOnly
|
- Firebase/CoreOnly
|
||||||
- FirebaseAuth (~> 10.28.0)
|
- FirebaseAuth (~> 11.4.0)
|
||||||
- Firebase/CoreOnly (10.28.0):
|
- Firebase/Core (11.4.0):
|
||||||
- FirebaseCore (= 10.28.0)
|
|
||||||
- Firebase/Messaging (10.28.0):
|
|
||||||
- Firebase/CoreOnly
|
- Firebase/CoreOnly
|
||||||
- FirebaseMessaging (~> 10.28.0)
|
- FirebaseAnalytics (~> 11.4.0)
|
||||||
- firebase_auth (5.1.2):
|
- Firebase/CoreOnly (11.4.0):
|
||||||
- Firebase/Auth (= 10.28.0)
|
- FirebaseCore (= 11.4.0)
|
||||||
|
- Firebase/Messaging (11.4.0):
|
||||||
|
- Firebase/CoreOnly
|
||||||
|
- FirebaseMessaging (~> 11.4.0)
|
||||||
|
- firebase_auth (5.3.4):
|
||||||
|
- Firebase/Auth (= 11.4.0)
|
||||||
- firebase_core
|
- firebase_core
|
||||||
- Flutter
|
- Flutter
|
||||||
- firebase_core (3.2.0):
|
- firebase_core (3.9.0):
|
||||||
- Firebase/CoreOnly (= 10.28.0)
|
- Firebase/CoreOnly (= 11.4.0)
|
||||||
- Flutter
|
- Flutter
|
||||||
- firebase_messaging (15.0.3):
|
- firebase_messaging (15.1.6):
|
||||||
- Firebase/Messaging (= 10.28.0)
|
- Firebase/Messaging (= 11.4.0)
|
||||||
- firebase_core
|
- firebase_core
|
||||||
- Flutter
|
- Flutter
|
||||||
- FirebaseAppCheckInterop (10.29.0)
|
- FirebaseAnalytics (11.4.0):
|
||||||
- FirebaseAuth (10.28.0):
|
- FirebaseAnalytics/AdIdSupport (= 11.4.0)
|
||||||
- FirebaseAppCheckInterop (~> 10.17)
|
- FirebaseCore (~> 11.0)
|
||||||
- FirebaseCore (~> 10.0)
|
- FirebaseInstallations (~> 11.0)
|
||||||
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
|
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
|
||||||
- GoogleUtilities/Environment (~> 7.8)
|
- GoogleUtilities/MethodSwizzler (~> 8.0)
|
||||||
- GTMSessionFetcher/Core (< 4.0, >= 2.1)
|
- GoogleUtilities/Network (~> 8.0)
|
||||||
|
- "GoogleUtilities/NSData+zlib (~> 8.0)"
|
||||||
|
- nanopb (~> 3.30910.0)
|
||||||
|
- FirebaseAnalytics/AdIdSupport (11.4.0):
|
||||||
|
- FirebaseCore (~> 11.0)
|
||||||
|
- FirebaseInstallations (~> 11.0)
|
||||||
|
- GoogleAppMeasurement (= 11.4.0)
|
||||||
|
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
|
||||||
|
- GoogleUtilities/MethodSwizzler (~> 8.0)
|
||||||
|
- GoogleUtilities/Network (~> 8.0)
|
||||||
|
- "GoogleUtilities/NSData+zlib (~> 8.0)"
|
||||||
|
- nanopb (~> 3.30910.0)
|
||||||
|
- FirebaseAppCheckInterop (11.6.0)
|
||||||
|
- FirebaseAuth (11.4.0):
|
||||||
|
- FirebaseAppCheckInterop (~> 11.0)
|
||||||
|
- FirebaseAuthInterop (~> 11.0)
|
||||||
|
- FirebaseCore (~> 11.4)
|
||||||
|
- FirebaseCoreExtension (~> 11.4)
|
||||||
|
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
|
||||||
|
- GoogleUtilities/Environment (~> 8.0)
|
||||||
|
- GTMSessionFetcher/Core (< 5.0, >= 3.4)
|
||||||
- RecaptchaInterop (~> 100.0)
|
- RecaptchaInterop (~> 100.0)
|
||||||
- FirebaseCore (10.28.0):
|
- FirebaseAuthInterop (11.6.0)
|
||||||
- FirebaseCoreInternal (~> 10.0)
|
- FirebaseCore (11.4.0):
|
||||||
- GoogleUtilities/Environment (~> 7.12)
|
- FirebaseCoreInternal (~> 11.0)
|
||||||
- GoogleUtilities/Logger (~> 7.12)
|
- GoogleUtilities/Environment (~> 8.0)
|
||||||
- FirebaseCoreInternal (10.29.0):
|
- GoogleUtilities/Logger (~> 8.0)
|
||||||
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
- FirebaseCoreExtension (11.4.1):
|
||||||
- FirebaseInstallations (10.29.0):
|
- FirebaseCore (~> 11.0)
|
||||||
- FirebaseCore (~> 10.0)
|
- FirebaseCoreInternal (11.6.0):
|
||||||
- GoogleUtilities/Environment (~> 7.8)
|
- "GoogleUtilities/NSData+zlib (~> 8.0)"
|
||||||
- GoogleUtilities/UserDefaults (~> 7.8)
|
- FirebaseInstallations (11.4.0):
|
||||||
- PromisesObjC (~> 2.1)
|
- FirebaseCore (~> 11.0)
|
||||||
- FirebaseMessaging (10.28.0):
|
- GoogleUtilities/Environment (~> 8.0)
|
||||||
- FirebaseCore (~> 10.0)
|
- GoogleUtilities/UserDefaults (~> 8.0)
|
||||||
- FirebaseInstallations (~> 10.0)
|
- PromisesObjC (~> 2.4)
|
||||||
- GoogleDataTransport (~> 9.3)
|
- FirebaseMessaging (11.4.0):
|
||||||
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
|
- FirebaseCore (~> 11.0)
|
||||||
- GoogleUtilities/Environment (~> 7.8)
|
- FirebaseInstallations (~> 11.0)
|
||||||
- GoogleUtilities/Reachability (~> 7.8)
|
- GoogleDataTransport (~> 10.0)
|
||||||
- GoogleUtilities/UserDefaults (~> 7.8)
|
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
|
||||||
- nanopb (< 2.30911.0, >= 2.30908.0)
|
- GoogleUtilities/Environment (~> 8.0)
|
||||||
|
- GoogleUtilities/Reachability (~> 8.0)
|
||||||
|
- GoogleUtilities/UserDefaults (~> 8.0)
|
||||||
|
- nanopb (~> 3.30910.0)
|
||||||
- Flutter (1.0.0)
|
- Flutter (1.0.0)
|
||||||
- flutter_contacts (0.0.1):
|
- flutter_contacts (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
@@ -83,72 +111,77 @@ PODS:
|
|||||||
- Flutter
|
- Flutter
|
||||||
- geolocator_apple (1.2.0):
|
- geolocator_apple (1.2.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- Google-Maps-iOS-Utils (5.0.0):
|
||||||
|
- GoogleMaps (~> 8.0)
|
||||||
- google_maps_flutter_ios (0.0.1):
|
- google_maps_flutter_ios (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- Google-Maps-iOS-Utils (< 7.0, >= 5.0)
|
||||||
- GoogleMaps (< 10.0, >= 8.4)
|
- GoogleMaps (< 10.0, >= 8.4)
|
||||||
- google_mlkit_commons (0.7.1):
|
|
||||||
- Flutter
|
|
||||||
- MLKitVision
|
|
||||||
- google_mlkit_text_recognition (0.13.0):
|
|
||||||
- Flutter
|
|
||||||
- google_mlkit_commons
|
|
||||||
- GoogleMLKit/TextRecognition (~> 6.0.0)
|
|
||||||
- google_sign_in_ios (0.0.1):
|
- google_sign_in_ios (0.0.1):
|
||||||
- AppAuth (>= 1.7.4)
|
- AppAuth (>= 1.7.4)
|
||||||
- Flutter
|
- Flutter
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- GoogleSignIn (~> 7.1)
|
- GoogleSignIn (~> 7.1)
|
||||||
- GTMSessionFetcher (>= 3.4.0)
|
- GTMSessionFetcher (>= 3.4.0)
|
||||||
- GoogleDataTransport (9.4.1):
|
- GoogleAppMeasurement (11.4.0):
|
||||||
- GoogleUtilities/Environment (~> 7.7)
|
- GoogleAppMeasurement/AdIdSupport (= 11.4.0)
|
||||||
- nanopb (< 2.30911.0, >= 2.30908.0)
|
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
|
||||||
- PromisesObjC (< 3.0, >= 1.2)
|
- GoogleUtilities/MethodSwizzler (~> 8.0)
|
||||||
|
- GoogleUtilities/Network (~> 8.0)
|
||||||
|
- "GoogleUtilities/NSData+zlib (~> 8.0)"
|
||||||
|
- nanopb (~> 3.30910.0)
|
||||||
|
- GoogleAppMeasurement/AdIdSupport (11.4.0):
|
||||||
|
- GoogleAppMeasurement/WithoutAdIdSupport (= 11.4.0)
|
||||||
|
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
|
||||||
|
- GoogleUtilities/MethodSwizzler (~> 8.0)
|
||||||
|
- GoogleUtilities/Network (~> 8.0)
|
||||||
|
- "GoogleUtilities/NSData+zlib (~> 8.0)"
|
||||||
|
- nanopb (~> 3.30910.0)
|
||||||
|
- GoogleAppMeasurement/WithoutAdIdSupport (11.4.0):
|
||||||
|
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
|
||||||
|
- GoogleUtilities/MethodSwizzler (~> 8.0)
|
||||||
|
- GoogleUtilities/Network (~> 8.0)
|
||||||
|
- "GoogleUtilities/NSData+zlib (~> 8.0)"
|
||||||
|
- nanopb (~> 3.30910.0)
|
||||||
|
- GoogleDataTransport (10.1.0):
|
||||||
|
- nanopb (~> 3.30910.0)
|
||||||
|
- PromisesObjC (~> 2.4)
|
||||||
- GoogleMaps (8.4.0):
|
- GoogleMaps (8.4.0):
|
||||||
- GoogleMaps/Maps (= 8.4.0)
|
- GoogleMaps/Maps (= 8.4.0)
|
||||||
- GoogleMaps/Base (8.4.0)
|
- GoogleMaps/Base (8.4.0)
|
||||||
- GoogleMaps/Maps (8.4.0):
|
- GoogleMaps/Maps (8.4.0):
|
||||||
- GoogleMaps/Base
|
- GoogleMaps/Base
|
||||||
- GoogleMLKit/MLKitCore (6.0.0):
|
|
||||||
- MLKitCommon (~> 11.0.0)
|
|
||||||
- GoogleMLKit/TextRecognition (6.0.0):
|
|
||||||
- GoogleMLKit/MLKitCore
|
|
||||||
- MLKitTextRecognition (~> 4.0.0)
|
|
||||||
- GoogleSignIn (7.1.0):
|
- GoogleSignIn (7.1.0):
|
||||||
- AppAuth (< 2.0, >= 1.7.3)
|
- AppAuth (< 2.0, >= 1.7.3)
|
||||||
- GTMAppAuth (< 5.0, >= 4.1.1)
|
- GTMAppAuth (< 5.0, >= 4.1.1)
|
||||||
- GTMSessionFetcher/Core (~> 3.3)
|
- GTMSessionFetcher/Core (~> 3.3)
|
||||||
- GoogleToolboxForMac/Defines (4.2.1)
|
- GoogleUtilities/AppDelegateSwizzler (8.0.2):
|
||||||
- GoogleToolboxForMac/Logger (4.2.1):
|
|
||||||
- GoogleToolboxForMac/Defines (= 4.2.1)
|
|
||||||
- "GoogleToolboxForMac/NSData+zlib (4.2.1)":
|
|
||||||
- GoogleToolboxForMac/Defines (= 4.2.1)
|
|
||||||
- GoogleUtilities/AppDelegateSwizzler (7.13.3):
|
|
||||||
- GoogleUtilities/Environment
|
- GoogleUtilities/Environment
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- GoogleUtilities/Network
|
- GoogleUtilities/Network
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/Environment (7.13.3):
|
- GoogleUtilities/Environment (8.0.2):
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- PromisesObjC (< 3.0, >= 1.2)
|
- GoogleUtilities/Logger (8.0.2):
|
||||||
- GoogleUtilities/Logger (7.13.3):
|
|
||||||
- GoogleUtilities/Environment
|
- GoogleUtilities/Environment
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/Network (7.13.3):
|
- GoogleUtilities/MethodSwizzler (8.0.2):
|
||||||
|
- GoogleUtilities/Logger
|
||||||
|
- GoogleUtilities/Privacy
|
||||||
|
- GoogleUtilities/Network (8.0.2):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- "GoogleUtilities/NSData+zlib"
|
- "GoogleUtilities/NSData+zlib"
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/Reachability
|
- GoogleUtilities/Reachability
|
||||||
- "GoogleUtilities/NSData+zlib (7.13.3)":
|
- "GoogleUtilities/NSData+zlib (8.0.2)":
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/Privacy (7.13.3)
|
- GoogleUtilities/Privacy (8.0.2)
|
||||||
- GoogleUtilities/Reachability (7.13.3):
|
- GoogleUtilities/Reachability (8.0.2):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/UserDefaults (7.13.3):
|
- GoogleUtilities/UserDefaults (8.0.2):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilitiesComponents (1.1.0):
|
|
||||||
- GoogleUtilities/Logger
|
|
||||||
- GTMAppAuth (4.1.1):
|
- GTMAppAuth (4.1.1):
|
||||||
- AppAuth/Core (~> 1.7)
|
- AppAuth/Core (~> 1.7)
|
||||||
- GTMSessionFetcher/Core (< 4.0, >= 3.3)
|
- GTMSessionFetcher/Core (< 4.0, >= 3.3)
|
||||||
@@ -178,37 +211,17 @@ PODS:
|
|||||||
- libwebp/sharpyuv
|
- libwebp/sharpyuv
|
||||||
- local_auth_darwin (0.0.1):
|
- local_auth_darwin (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- FlutterMacOS
|
||||||
- location (0.0.1):
|
- location (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- Mantle (2.2.0):
|
- Mantle (2.2.0):
|
||||||
- Mantle/extobjc (= 2.2.0)
|
- Mantle/extobjc (= 2.2.0)
|
||||||
- Mantle/extobjc (2.2.0)
|
- Mantle/extobjc (2.2.0)
|
||||||
- MLImage (1.0.0-beta5)
|
- nanopb (3.30910.0):
|
||||||
- MLKitCommon (11.0.0):
|
- nanopb/decode (= 3.30910.0)
|
||||||
- GoogleDataTransport (< 10.0, >= 9.4.1)
|
- nanopb/encode (= 3.30910.0)
|
||||||
- GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
|
- nanopb/decode (3.30910.0)
|
||||||
- "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
|
- nanopb/encode (3.30910.0)
|
||||||
- GoogleUtilities/UserDefaults (< 8.0, >= 7.13.0)
|
|
||||||
- GoogleUtilitiesComponents (~> 1.0)
|
|
||||||
- GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
|
|
||||||
- MLKitTextRecognition (4.0.0):
|
|
||||||
- MLKitCommon (~> 11.0)
|
|
||||||
- MLKitTextRecognitionCommon (= 3.0.0)
|
|
||||||
- MLKitVision (~> 7.0)
|
|
||||||
- MLKitTextRecognitionCommon (3.0.0):
|
|
||||||
- MLKitCommon (~> 11.0)
|
|
||||||
- MLKitVision (~> 7.0)
|
|
||||||
- MLKitVision (7.0.0):
|
|
||||||
- GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
|
|
||||||
- "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
|
|
||||||
- GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
|
|
||||||
- MLImage (= 1.0.0-beta5)
|
|
||||||
- MLKitCommon (~> 11.0)
|
|
||||||
- nanopb (2.30910.0):
|
|
||||||
- nanopb/decode (= 2.30910.0)
|
|
||||||
- nanopb/encode (= 2.30910.0)
|
|
||||||
- nanopb/decode (2.30910.0)
|
|
||||||
- nanopb/encode (2.30910.0)
|
|
||||||
- OrderedSet (6.0.3)
|
- OrderedSet (6.0.3)
|
||||||
- package_info_plus (0.4.5):
|
- package_info_plus (0.4.5):
|
||||||
- Flutter
|
- Flutter
|
||||||
@@ -221,10 +234,9 @@ PODS:
|
|||||||
- RecaptchaInterop (100.0.0)
|
- RecaptchaInterop (100.0.0)
|
||||||
- record_darwin (1.0.0):
|
- record_darwin (1.0.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
- FlutterMacOS
|
- SDWebImage (5.20.0):
|
||||||
- SDWebImage (5.19.7):
|
- SDWebImage/Core (= 5.20.0)
|
||||||
- SDWebImage/Core (= 5.19.7)
|
- SDWebImage/Core (5.20.0)
|
||||||
- SDWebImage/Core (5.19.7)
|
|
||||||
- SDWebImageWebPCoder (0.14.6):
|
- SDWebImageWebPCoder (0.14.6):
|
||||||
- libwebp (~> 1.0)
|
- libwebp (~> 1.0)
|
||||||
- SDWebImage/Core (~> 5.17)
|
- SDWebImage/Core (~> 5.17)
|
||||||
@@ -232,45 +244,45 @@ PODS:
|
|||||||
- Flutter
|
- Flutter
|
||||||
- sign_in_with_apple (0.0.1):
|
- sign_in_with_apple (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- sqflite (0.0.3):
|
- sqflite_darwin (0.0.4):
|
||||||
- Flutter
|
- Flutter
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- Stripe (23.27.6):
|
- Stripe (23.30.0):
|
||||||
- StripeApplePay (= 23.27.6)
|
- StripeApplePay (= 23.30.0)
|
||||||
- StripeCore (= 23.27.6)
|
- StripeCore (= 23.30.0)
|
||||||
- StripePayments (= 23.27.6)
|
- StripePayments (= 23.30.0)
|
||||||
- StripePaymentsUI (= 23.27.6)
|
- StripePaymentsUI (= 23.30.0)
|
||||||
- StripeUICore (= 23.27.6)
|
- StripeUICore (= 23.30.0)
|
||||||
- stripe_ios (0.0.1):
|
- stripe_ios (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- Stripe (~> 23.27.0)
|
- Stripe (~> 23.30.0)
|
||||||
- StripeApplePay (~> 23.27.0)
|
- StripeApplePay (~> 23.30.0)
|
||||||
- StripeFinancialConnections (~> 23.27.0)
|
- StripeFinancialConnections (~> 23.30.0)
|
||||||
- StripePayments (~> 23.27.0)
|
- StripePayments (~> 23.30.0)
|
||||||
- StripePaymentSheet (~> 23.27.0)
|
- StripePaymentSheet (~> 23.30.0)
|
||||||
- StripePaymentsUI (~> 23.27.0)
|
- StripePaymentsUI (~> 23.30.0)
|
||||||
- StripeApplePay (23.27.6):
|
- StripeApplePay (23.30.0):
|
||||||
- StripeCore (= 23.27.6)
|
- StripeCore (= 23.30.0)
|
||||||
- StripeCore (23.27.6)
|
- StripeCore (23.30.0)
|
||||||
- StripeFinancialConnections (23.27.6):
|
- StripeFinancialConnections (23.30.0):
|
||||||
- StripeCore (= 23.27.6)
|
- StripeCore (= 23.30.0)
|
||||||
- StripeUICore (= 23.27.6)
|
- StripeUICore (= 23.30.0)
|
||||||
- StripePayments (23.27.6):
|
- StripePayments (23.30.0):
|
||||||
- StripeCore (= 23.27.6)
|
- StripeCore (= 23.30.0)
|
||||||
- StripePayments/Stripe3DS2 (= 23.27.6)
|
- StripePayments/Stripe3DS2 (= 23.30.0)
|
||||||
- StripePayments/Stripe3DS2 (23.27.6):
|
- StripePayments/Stripe3DS2 (23.30.0):
|
||||||
- StripeCore (= 23.27.6)
|
- StripeCore (= 23.30.0)
|
||||||
- StripePaymentSheet (23.27.6):
|
- StripePaymentSheet (23.30.0):
|
||||||
- StripeApplePay (= 23.27.6)
|
- StripeApplePay (= 23.30.0)
|
||||||
- StripeCore (= 23.27.6)
|
- StripeCore (= 23.30.0)
|
||||||
- StripePayments (= 23.27.6)
|
- StripePayments (= 23.30.0)
|
||||||
- StripePaymentsUI (= 23.27.6)
|
- StripePaymentsUI (= 23.30.0)
|
||||||
- StripePaymentsUI (23.27.6):
|
- StripePaymentsUI (23.30.0):
|
||||||
- StripeCore (= 23.27.6)
|
- StripeCore (= 23.30.0)
|
||||||
- StripePayments (= 23.27.6)
|
- StripePayments (= 23.30.0)
|
||||||
- StripeUICore (= 23.27.6)
|
- StripeUICore (= 23.30.0)
|
||||||
- StripeUICore (23.27.6):
|
- StripeUICore (23.30.0):
|
||||||
- StripeCore (= 23.27.6)
|
- StripeCore (= 23.30.0)
|
||||||
- TOCropViewController (2.7.4)
|
- TOCropViewController (2.7.4)
|
||||||
- url_launcher_ios (0.0.1):
|
- url_launcher_ios (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
@@ -290,9 +302,13 @@ DEPENDENCIES:
|
|||||||
- background_location (from `.symlinks/plugins/background_location/ios`)
|
- background_location (from `.symlinks/plugins/background_location/ios`)
|
||||||
- camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`)
|
- camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`)
|
||||||
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
||||||
|
- Firebase
|
||||||
- firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
|
- firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
|
||||||
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
||||||
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
|
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
|
||||||
|
- FirebaseAuth
|
||||||
|
- FirebaseCore
|
||||||
|
- FirebaseMessaging
|
||||||
- Flutter (from `Flutter`)
|
- Flutter (from `Flutter`)
|
||||||
- flutter_contacts (from `.symlinks/plugins/flutter_contacts/ios`)
|
- flutter_contacts (from `.symlinks/plugins/flutter_contacts/ios`)
|
||||||
- flutter_image_compress_common (from `.symlinks/plugins/flutter_image_compress_common/ios`)
|
- flutter_image_compress_common (from `.symlinks/plugins/flutter_image_compress_common/ios`)
|
||||||
@@ -302,8 +318,6 @@ DEPENDENCIES:
|
|||||||
- flutter_tts (from `.symlinks/plugins/flutter_tts/ios`)
|
- flutter_tts (from `.symlinks/plugins/flutter_tts/ios`)
|
||||||
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
|
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
|
||||||
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
|
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
|
||||||
- google_mlkit_commons (from `.symlinks/plugins/google_mlkit_commons/ios`)
|
|
||||||
- google_mlkit_text_recognition (from `.symlinks/plugins/google_mlkit_text_recognition/ios`)
|
|
||||||
- google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`)
|
- google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`)
|
||||||
- image_cropper (from `.symlinks/plugins/image_cropper/ios`)
|
- image_cropper (from `.symlinks/plugins/image_cropper/ios`)
|
||||||
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
|
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
|
||||||
@@ -316,7 +330,7 @@ DEPENDENCIES:
|
|||||||
- record_darwin (from `.symlinks/plugins/record_darwin/ios`)
|
- record_darwin (from `.symlinks/plugins/record_darwin/ios`)
|
||||||
- share (from `.symlinks/plugins/share/ios`)
|
- share (from `.symlinks/plugins/share/ios`)
|
||||||
- sign_in_with_apple (from `.symlinks/plugins/sign_in_with_apple/ios`)
|
- sign_in_with_apple (from `.symlinks/plugins/sign_in_with_apple/ios`)
|
||||||
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
|
- sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
|
||||||
- stripe_ios (from `.symlinks/plugins/stripe_ios/ios`)
|
- stripe_ios (from `.symlinks/plugins/stripe_ios/ios`)
|
||||||
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
||||||
- vibration (from `.symlinks/plugins/vibration/ios`)
|
- vibration (from `.symlinks/plugins/vibration/ios`)
|
||||||
@@ -328,28 +342,25 @@ SPEC REPOS:
|
|||||||
trunk:
|
trunk:
|
||||||
- AppAuth
|
- AppAuth
|
||||||
- Firebase
|
- Firebase
|
||||||
|
- FirebaseAnalytics
|
||||||
- FirebaseAppCheckInterop
|
- FirebaseAppCheckInterop
|
||||||
- FirebaseAuth
|
- FirebaseAuth
|
||||||
|
- FirebaseAuthInterop
|
||||||
- FirebaseCore
|
- FirebaseCore
|
||||||
|
- FirebaseCoreExtension
|
||||||
- FirebaseCoreInternal
|
- FirebaseCoreInternal
|
||||||
- FirebaseInstallations
|
- FirebaseInstallations
|
||||||
- FirebaseMessaging
|
- FirebaseMessaging
|
||||||
|
- Google-Maps-iOS-Utils
|
||||||
|
- GoogleAppMeasurement
|
||||||
- GoogleDataTransport
|
- GoogleDataTransport
|
||||||
- GoogleMaps
|
- GoogleMaps
|
||||||
- GoogleMLKit
|
|
||||||
- GoogleSignIn
|
- GoogleSignIn
|
||||||
- GoogleToolboxForMac
|
|
||||||
- GoogleUtilities
|
- GoogleUtilities
|
||||||
- GoogleUtilitiesComponents
|
|
||||||
- GTMAppAuth
|
- GTMAppAuth
|
||||||
- GTMSessionFetcher
|
- GTMSessionFetcher
|
||||||
- libwebp
|
- libwebp
|
||||||
- Mantle
|
- Mantle
|
||||||
- MLImage
|
|
||||||
- MLKitCommon
|
|
||||||
- MLKitTextRecognition
|
|
||||||
- MLKitTextRecognitionCommon
|
|
||||||
- MLKitVision
|
|
||||||
- nanopb
|
- nanopb
|
||||||
- OrderedSet
|
- OrderedSet
|
||||||
- PromisesObjC
|
- PromisesObjC
|
||||||
@@ -399,10 +410,6 @@ EXTERNAL SOURCES:
|
|||||||
:path: ".symlinks/plugins/geolocator_apple/ios"
|
:path: ".symlinks/plugins/geolocator_apple/ios"
|
||||||
google_maps_flutter_ios:
|
google_maps_flutter_ios:
|
||||||
:path: ".symlinks/plugins/google_maps_flutter_ios/ios"
|
:path: ".symlinks/plugins/google_maps_flutter_ios/ios"
|
||||||
google_mlkit_commons:
|
|
||||||
:path: ".symlinks/plugins/google_mlkit_commons/ios"
|
|
||||||
google_mlkit_text_recognition:
|
|
||||||
:path: ".symlinks/plugins/google_mlkit_text_recognition/ios"
|
|
||||||
google_sign_in_ios:
|
google_sign_in_ios:
|
||||||
:path: ".symlinks/plugins/google_sign_in_ios/darwin"
|
:path: ".symlinks/plugins/google_sign_in_ios/darwin"
|
||||||
image_cropper:
|
image_cropper:
|
||||||
@@ -427,8 +434,8 @@ EXTERNAL SOURCES:
|
|||||||
:path: ".symlinks/plugins/share/ios"
|
:path: ".symlinks/plugins/share/ios"
|
||||||
sign_in_with_apple:
|
sign_in_with_apple:
|
||||||
:path: ".symlinks/plugins/sign_in_with_apple/ios"
|
:path: ".symlinks/plugins/sign_in_with_apple/ios"
|
||||||
sqflite:
|
sqflite_darwin:
|
||||||
:path: ".symlinks/plugins/sqflite/darwin"
|
:path: ".symlinks/plugins/sqflite_darwin/darwin"
|
||||||
stripe_ios:
|
stripe_ios:
|
||||||
:path: ".symlinks/plugins/stripe_ios/ios"
|
:path: ".symlinks/plugins/stripe_ios/ios"
|
||||||
url_launcher_ios:
|
url_launcher_ios:
|
||||||
@@ -443,83 +450,78 @@ EXTERNAL SOURCES:
|
|||||||
:path: ".symlinks/plugins/webview_flutter_wkwebview/darwin"
|
:path: ".symlinks/plugins/webview_flutter_wkwebview/darwin"
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa
|
AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73
|
||||||
audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207
|
audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207
|
||||||
background_location: 1b80c1fe3abd9912bca298618f6e365abf6f588f
|
background_location: 1b80c1fe3abd9912bca298618f6e365abf6f588f
|
||||||
camera_avfoundation: dd002b0330f4981e1bbcb46ae9b62829237459a4
|
camera_avfoundation: dd002b0330f4981e1bbcb46ae9b62829237459a4
|
||||||
device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
|
device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342
|
||||||
Firebase: 5121c624121af81cbc81df3bda414b3c28c4f3c3
|
Firebase: cf1b19f21410b029b6786a54e9764a0cacad3c99
|
||||||
firebase_auth: e778ee89483b86fe4200d1f8e9a1c52aa5fb64a8
|
firebase_auth: c4bdd9d7b338ac004008cb5024a643584e0ec03f
|
||||||
firebase_core: a9d0180d5285527884d07a41eb4a9ec9ed12cdb6
|
firebase_core: b62a5080210edad3f2934314a8b2c6f5124e8e10
|
||||||
firebase_messaging: ccc82a143a74de75f440a4e413dbbb37ec3fddbc
|
firebase_messaging: 98619a0572d82cfb3668e78859ba9f1110e268c9
|
||||||
FirebaseAppCheckInterop: 6a1757cfd4067d8e00fccd14fcc1b8fd78cfac07
|
FirebaseAnalytics: 3feef9ae8733c567866342a1000691baaa7cad49
|
||||||
FirebaseAuth: 3d872fbbfc4223edeb72769e488f325fa8b0a4a9
|
FirebaseAppCheckInterop: 347aa09a805219a31249b58fc956888e9fcb314b
|
||||||
FirebaseCore: 857dc1c6dd1255675047404d8466f7dfaac5d779
|
FirebaseAuth: c359af98bd703cbf4293eec107a40de08ede6ce6
|
||||||
FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934
|
FirebaseAuthInterop: a919d415797d23b7bfe195a04f322b86c65020ef
|
||||||
FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd
|
FirebaseCore: e0510f1523bc0eb21653cac00792e1e2bd6f1771
|
||||||
FirebaseMessaging: 087a7c7cadef7b9239f005bc4db823894844f323
|
FirebaseCoreExtension: f1bc67a4702931a7caa097d8e4ac0a1b0d16720e
|
||||||
|
FirebaseCoreInternal: d98ab91e2d80a56d7b246856a8885443b302c0c2
|
||||||
|
FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414
|
||||||
|
FirebaseMessaging: f8a160d99c2c2e5babbbcc90c4a3e15db036aee2
|
||||||
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
||||||
flutter_contacts: edb1c5ce76aa433e20e6cb14c615f4c0b66e0983
|
flutter_contacts: edb1c5ce76aa433e20e6cb14c615f4c0b66e0983
|
||||||
flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e
|
flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e
|
||||||
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
|
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
|
||||||
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
|
flutter_local_notifications: df98d66e515e1ca797af436137b4459b160ad8c9
|
||||||
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
|
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
|
||||||
flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d
|
flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d
|
||||||
geolocator_apple: 6cbaf322953988e009e5ecb481f07efece75c450
|
geolocator_apple: 9bcea1918ff7f0062d98345d238ae12718acfbc1
|
||||||
google_maps_flutter_ios: 5bc2be60ad012e79b182ce0fb0ef5030a50fb03e
|
Google-Maps-iOS-Utils: 66d6de12be1ce6d3742a54661e7a79cb317a9321
|
||||||
google_mlkit_commons: 96aaca445520311b84a2da013dedf3427fe4cc69
|
google_maps_flutter_ios: e31555a04d1986ab130f2b9f24b6cdc861acc6d3
|
||||||
google_mlkit_text_recognition: 393c2526da49aa6c9c883e6d69100f54af011e24
|
|
||||||
google_sign_in_ios: 07375bfbf2620bc93a602c0e27160d6afc6ead38
|
google_sign_in_ios: 07375bfbf2620bc93a602c0e27160d6afc6ead38
|
||||||
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
|
GoogleAppMeasurement: 987769c4ca6b968f2479fbcc9fe3ce34af454b8e
|
||||||
|
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
|
||||||
GoogleMaps: 8939898920281c649150e0af74aa291c60f2e77d
|
GoogleMaps: 8939898920281c649150e0af74aa291c60f2e77d
|
||||||
GoogleMLKit: 97ac7af399057e99182ee8edfa8249e3226a4065
|
|
||||||
GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db
|
GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db
|
||||||
GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8
|
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
|
||||||
GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
|
|
||||||
GoogleUtilitiesComponents: 679b2c881db3b615a2777504623df6122dd20afe
|
|
||||||
GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de
|
GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de
|
||||||
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
|
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
|
||||||
image_cropper: 37d40f62177c101ff4c164906d259ea2c3aa70cf
|
image_cropper: 37d40f62177c101ff4c164906d259ea2c3aa70cf
|
||||||
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
|
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
|
||||||
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
|
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
|
||||||
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
|
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
|
||||||
local_auth_darwin: 4d56c90c2683319835a61274b57620df9c4520ab
|
local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3
|
||||||
location: d5cf8598915965547c3f36761ae9cc4f4e87d22e
|
location: d5cf8598915965547c3f36761ae9cc4f4e87d22e
|
||||||
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
|
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
|
||||||
MLImage: 1824212150da33ef225fbd3dc49f184cf611046c
|
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
||||||
MLKitCommon: afec63980417d29ffbb4790529a1b0a2291699e1
|
|
||||||
MLKitTextRecognition: c83c18ad25496f2077f6ec93c5940487ff2eb343
|
|
||||||
MLKitTextRecognitionCommon: c0b3a63d529296a19bce1f8bc8a513644ed4d1f6
|
|
||||||
MLKitVision: e858c5f125ecc288e4a31127928301eaba9ae0c1
|
|
||||||
nanopb: 438bc412db1928dac798aa6fd75726007be04262
|
|
||||||
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
|
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
|
||||||
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
|
package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
|
||||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||||
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
||||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||||
RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
|
RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
|
||||||
record_darwin: df0a677188e5fed18472550298e675f19ddaffbe
|
record_darwin: 3b1a8e7d5c0cbf45ad6165b4d83a6ca643d929c3
|
||||||
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
|
SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8
|
||||||
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
|
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
|
||||||
share: 0b2c3e82132f5888bccca3351c504d0003b3b410
|
share: 0b2c3e82132f5888bccca3351c504d0003b3b410
|
||||||
sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440
|
sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440
|
||||||
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
|
||||||
Stripe: 9fec845645e39f371e6898926d096fd9c2feb5a5
|
Stripe: 9757efc154de1d9615cbea4836d590bc4034d3a4
|
||||||
stripe_ios: 03c617acee72e48a2d055d096a4b0ed2afebb256
|
stripe_ios: 4463f81157e91cbbf441e1b3fdf5edce90787491
|
||||||
StripeApplePay: 5f017e8dfe259fafbab70137776189deef754bb2
|
StripeApplePay: ca33933601302742623762157d587b79b942d073
|
||||||
StripeCore: 01ec57f0dddfe742054dc6a322f811426c25313d
|
StripeCore: 2af250a2366ff2bbf64d4243c5f9bbf2a98b2aaf
|
||||||
StripeFinancialConnections: 56698cb6274bf89fb8c76b934f6156f368e97765
|
StripeFinancialConnections: 3ab1ef6182ec44e71c29e9a2100b663f9713ac20
|
||||||
StripePayments: 6adf11faf1b7038e77aa97019410305c6adca79d
|
StripePayments: 658a16bd34d20c8185aa281866227b9e1743300e
|
||||||
StripePaymentSheet: 3eaf870c4388e44b0cc37e4c69d00b6957fd8bd7
|
StripePaymentSheet: eac031f76d7fbb4f52df9b9c39be5be671ca4c07
|
||||||
StripePaymentsUI: 59ccddeacad592b09fa67e8d641340820ddb4751
|
StripePaymentsUI: 7d7cffb2ecfc0d6b5ac3a4488c02893a5ff6cc77
|
||||||
StripeUICore: 879bbf5889265db13f52fac8aad7a176ba62481f
|
StripeUICore: bb102d453b1e1a10a37f810bc0a9aa0675fb17fd
|
||||||
TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654
|
TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654
|
||||||
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
||||||
vibration: 7d883d141656a1c1a6d8d238616b2042a51a1241
|
vibration: 7d883d141656a1c1a6d8d238616b2042a51a1241
|
||||||
video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
|
video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
|
||||||
wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1
|
wakelock_plus: 373cfe59b235a6dd5837d0fb88791d2f13a90d56
|
||||||
webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4
|
webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4
|
||||||
|
|
||||||
PODFILE CHECKSUM: d9271c147dd54ffd9ca5d77bf00ca21a1c9a5961
|
PODFILE CHECKSUM: 07f180bff2523e15e01e42c30418373e5627c8fd
|
||||||
|
|
||||||
COCOAPODS: 1.15.2
|
COCOAPODS: 1.16.2
|
||||||
|
|||||||
@@ -7,10 +7,11 @@
|
|||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
0E2EB9A18A85A8C79C1A5B17 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27958A27956787B6764BC14F /* Pods_RunnerTests.framework */; };
|
|
||||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
||||||
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
|
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
|
||||||
|
38BFC4984B1B26A880FE76DE /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AC5295B6ADEC13901A4281A /* Pods_RunnerTests.framework */; };
|
||||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||||
|
3CEA26D0738D4C4B62323122 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1987A597103D3E58DD06571 /* Pods_Runner.framework */; };
|
||||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
||||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
||||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
||||||
@@ -25,7 +26,6 @@
|
|||||||
C690B4752A80554500E1D66E /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C690B4742A80554500E1D66E /* GoogleService-Info.plist */; };
|
C690B4752A80554500E1D66E /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C690B4742A80554500E1D66E /* GoogleService-Info.plist */; };
|
||||||
C6B15AA12B5FB24600746405 /* order.wav in Resources */ = {isa = PBXBuildFile; fileRef = C6B15A9F2B5FB24600746405 /* order.wav */; };
|
C6B15AA12B5FB24600746405 /* order.wav in Resources */ = {isa = PBXBuildFile; fileRef = C6B15A9F2B5FB24600746405 /* order.wav */; };
|
||||||
C6B15AA22B5FB24600746405 /* tone2.wav in Resources */ = {isa = PBXBuildFile; fileRef = C6B15AA02B5FB24600746405 /* tone2.wav */; };
|
C6B15AA22B5FB24600746405 /* tone2.wav in Resources */ = {isa = PBXBuildFile; fileRef = C6B15AA02B5FB24600746405 /* tone2.wav */; };
|
||||||
D529E7C8240CCC30BB7358A2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B099132D71B1299FCDFD9C8 /* Pods_Runner.framework */; };
|
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
@@ -52,17 +52,16 @@
|
|||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
08CDD9E654C52E05FEE40E98 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
|
0116059C9A3684AC66E6EA10 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
0A588BA0B74F002C38F0E4F0 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
||||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||||
27958A27956787B6764BC14F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
169535ADE82517D8C1F876D0 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
20CE5C1BB6B23CE4706F0F53 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
2AC5295B6ADEC13901A4281A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
|
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
|
||||||
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
3B099132D71B1299FCDFD9C8 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||||
42939EAD96568C1F3F0E8006 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
43385D55BAC53942A4B30B22 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
45F2ED245254D48D155DD716 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||||
@@ -73,6 +72,7 @@
|
|||||||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
|
A1987A597103D3E58DD06571 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
C624C45C2BD56D34002834AF /* tone1.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = tone1.mp3; path = ../../android/app/src/main/res/raw/tone1.mp3; sourceTree = "<group>"; };
|
C624C45C2BD56D34002834AF /* tone1.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = tone1.mp3; path = ../../android/app/src/main/res/raw/tone1.mp3; sourceTree = "<group>"; };
|
||||||
C624C45D2BD56D34002834AF /* start.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = start.wav; path = ../../android/app/src/main/res/raw/start.wav; sourceTree = "<group>"; };
|
C624C45D2BD56D34002834AF /* start.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = start.wav; path = ../../android/app/src/main/res/raw/start.wav; sourceTree = "<group>"; };
|
||||||
C624C45F2BD56D34002834AF /* promo.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = promo.wav; path = ../../android/app/src/main/res/raw/promo.wav; sourceTree = "<group>"; };
|
C624C45F2BD56D34002834AF /* promo.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = promo.wav; path = ../../android/app/src/main/res/raw/promo.wav; sourceTree = "<group>"; };
|
||||||
@@ -84,8 +84,8 @@
|
|||||||
C69588332A8C1F6B00C3AC67 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
|
C69588332A8C1F6B00C3AC67 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
|
||||||
C6B15A9F2B5FB24600746405 /* order.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = order.wav; sourceTree = "<group>"; };
|
C6B15A9F2B5FB24600746405 /* order.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = order.wav; sourceTree = "<group>"; };
|
||||||
C6B15AA02B5FB24600746405 /* tone2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = tone2.wav; sourceTree = "<group>"; };
|
C6B15AA02B5FB24600746405 /* tone2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = tone2.wav; sourceTree = "<group>"; };
|
||||||
CAF37DC30C17166B851DBC8C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
F13EEC8BD3BD109D175EA06D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
F231BA28015FE2C634809733 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
|
F8C2B267C197A536F06ED67A /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
0E2EB9A18A85A8C79C1A5B17 /* Pods_RunnerTests.framework in Frameworks */,
|
38BFC4984B1B26A880FE76DE /* Pods_RunnerTests.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
D529E7C8240CCC30BB7358A2 /* Pods_Runner.framework in Frameworks */,
|
3CEA26D0738D4C4B62323122 /* Pods_Runner.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -119,12 +119,12 @@
|
|||||||
5684D45491D29A320AB8001A /* Pods */ = {
|
5684D45491D29A320AB8001A /* Pods */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
08CDD9E654C52E05FEE40E98 /* Pods-Runner.debug.xcconfig */,
|
169535ADE82517D8C1F876D0 /* Pods-Runner.debug.xcconfig */,
|
||||||
F231BA28015FE2C634809733 /* Pods-Runner.release.xcconfig */,
|
F13EEC8BD3BD109D175EA06D /* Pods-Runner.release.xcconfig */,
|
||||||
CAF37DC30C17166B851DBC8C /* Pods-Runner.profile.xcconfig */,
|
20CE5C1BB6B23CE4706F0F53 /* Pods-Runner.profile.xcconfig */,
|
||||||
43385D55BAC53942A4B30B22 /* Pods-RunnerTests.debug.xcconfig */,
|
0A588BA0B74F002C38F0E4F0 /* Pods-RunnerTests.debug.xcconfig */,
|
||||||
45F2ED245254D48D155DD716 /* Pods-RunnerTests.release.xcconfig */,
|
F8C2B267C197A536F06ED67A /* Pods-RunnerTests.release.xcconfig */,
|
||||||
42939EAD96568C1F3F0E8006 /* Pods-RunnerTests.profile.xcconfig */,
|
0116059C9A3684AC66E6EA10 /* Pods-RunnerTests.profile.xcconfig */,
|
||||||
);
|
);
|
||||||
path = Pods;
|
path = Pods;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
97C146EF1CF9000F007C117D /* Products */,
|
97C146EF1CF9000F007C117D /* Products */,
|
||||||
331C8082294A63A400263BE5 /* RunnerTests */,
|
331C8082294A63A400263BE5 /* RunnerTests */,
|
||||||
5684D45491D29A320AB8001A /* Pods */,
|
5684D45491D29A320AB8001A /* Pods */,
|
||||||
B3041BA408DBB12F66846F39 /* Frameworks */,
|
A3767309D6B5681282917CC7 /* Frameworks */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@@ -187,11 +187,11 @@
|
|||||||
path = Runner;
|
path = Runner;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
B3041BA408DBB12F66846F39 /* Frameworks */ = {
|
A3767309D6B5681282917CC7 /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
3B099132D71B1299FCDFD9C8 /* Pods_Runner.framework */,
|
A1987A597103D3E58DD06571 /* Pods_Runner.framework */,
|
||||||
27958A27956787B6764BC14F /* Pods_RunnerTests.framework */,
|
2AC5295B6ADEC13901A4281A /* Pods_RunnerTests.framework */,
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -203,7 +203,7 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
|
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
E21B2D2CCD3CE8A2142D0F2C /* [CP] Check Pods Manifest.lock */,
|
6A195BB0776CA9E53EAA143A /* [CP] Check Pods Manifest.lock */,
|
||||||
331C807D294A63A400263BE5 /* Sources */,
|
331C807D294A63A400263BE5 /* Sources */,
|
||||||
331C807F294A63A400263BE5 /* Resources */,
|
331C807F294A63A400263BE5 /* Resources */,
|
||||||
7AD318F74F39A70FCC91E66D /* Frameworks */,
|
7AD318F74F39A70FCC91E66D /* Frameworks */,
|
||||||
@@ -222,15 +222,15 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
3F036A01BF594E9B01799541 /* [CP] Check Pods Manifest.lock */,
|
495F1A7DF9442FE345F87EDB /* [CP] Check Pods Manifest.lock */,
|
||||||
9740EEB61CF901F6004384FC /* Run Script */,
|
9740EEB61CF901F6004384FC /* Run Script */,
|
||||||
97C146EA1CF9000F007C117D /* Sources */,
|
97C146EA1CF9000F007C117D /* Sources */,
|
||||||
97C146EB1CF9000F007C117D /* Frameworks */,
|
97C146EB1CF9000F007C117D /* Frameworks */,
|
||||||
97C146EC1CF9000F007C117D /* Resources */,
|
97C146EC1CF9000F007C117D /* Resources */,
|
||||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||||
854CC60BC5A3FC7474EC1FBF /* [CP] Embed Pods Frameworks */,
|
87F758C3C5B8AE624C4BE481 /* [CP] Embed Pods Frameworks */,
|
||||||
7ADB08D4DE3D2A2E09575068 /* [CP] Copy Pods Resources */,
|
99A28AAD8EACCE6238494873 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@@ -328,7 +328,7 @@
|
|||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
||||||
};
|
};
|
||||||
3F036A01BF594E9B01799541 /* [CP] Check Pods Manifest.lock */ = {
|
495F1A7DF9442FE345F87EDB /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@@ -350,24 +350,29 @@
|
|||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
7ADB08D4DE3D2A2E09575068 /* [CP] Copy Pods Resources */ = {
|
6A195BB0776CA9E53EAA143A /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputFileListPaths = (
|
inputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
|
|
||||||
);
|
);
|
||||||
name = "[CP] Copy Pods Resources";
|
inputPaths = (
|
||||||
|
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||||
|
"${PODS_ROOT}/Manifest.lock",
|
||||||
|
);
|
||||||
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
outputFileListPaths = (
|
outputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
|
);
|
||||||
|
outputPaths = (
|
||||||
|
"$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
854CC60BC5A3FC7474EC1FBF /* [CP] Embed Pods Frameworks */ = {
|
87F758C3C5B8AE624C4BE481 /* [CP] Embed Pods Frameworks */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@@ -399,26 +404,21 @@
|
|||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||||
};
|
};
|
||||||
E21B2D2CCD3CE8A2142D0F2C /* [CP] Check Pods Manifest.lock */ = {
|
99A28AAD8EACCE6238494873 /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputFileListPaths = (
|
inputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
);
|
);
|
||||||
inputPaths = (
|
name = "[CP] Copy Pods Resources";
|
||||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
|
||||||
"${PODS_ROOT}/Manifest.lock",
|
|
||||||
);
|
|
||||||
name = "[CP] Check Pods Manifest.lock";
|
|
||||||
outputFileListPaths = (
|
outputFileListPaths = (
|
||||||
);
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
outputPaths = (
|
|
||||||
"$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
@@ -550,7 +550,7 @@
|
|||||||
};
|
};
|
||||||
331C8088294A63A400263BE5 /* Debug */ = {
|
331C8088294A63A400263BE5 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 43385D55BAC53942A4B30B22 /* Pods-RunnerTests.debug.xcconfig */;
|
baseConfigurationReference = 0A588BA0B74F002C38F0E4F0 /* Pods-RunnerTests.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
@@ -569,7 +569,7 @@
|
|||||||
};
|
};
|
||||||
331C8089294A63A400263BE5 /* Release */ = {
|
331C8089294A63A400263BE5 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 45F2ED245254D48D155DD716 /* Pods-RunnerTests.release.xcconfig */;
|
baseConfigurationReference = F8C2B267C197A536F06ED67A /* Pods-RunnerTests.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
@@ -586,7 +586,7 @@
|
|||||||
};
|
};
|
||||||
331C808A294A63A400263BE5 /* Profile */ = {
|
331C808A294A63A400263BE5 /* Profile */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 42939EAD96568C1F3F0E8006 /* Pods-RunnerTests.profile.xcconfig */;
|
baseConfigurationReference = 0116059C9A3684AC66E6EA10 /* Pods-RunnerTests.profile.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
|||||||
@@ -1,93 +1,93 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart';
|
// import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart';
|
||||||
import 'package:image_cropper/image_cropper.dart';
|
import 'package:image_cropper/image_cropper.dart';
|
||||||
import 'package:image_picker/image_picker.dart';
|
import 'package:image_picker/image_picker.dart';
|
||||||
import 'package:sefer_driver/constant/colors.dart';
|
import 'package:sefer_driver/constant/colors.dart';
|
||||||
import 'package:sefer_driver/controller/functions/llama_ai.dart';
|
import 'package:sefer_driver/controller/functions/llama_ai.dart';
|
||||||
|
|
||||||
class CarRegistrationRecognizerController extends GetxController {
|
// class CarRegistrationRecognizerController extends GetxController {
|
||||||
@override
|
// @override
|
||||||
void onInit() {
|
// void onInit() {
|
||||||
// scanText();
|
// // scanText();
|
||||||
super.onInit();
|
// super.onInit();
|
||||||
}
|
// }
|
||||||
|
|
||||||
// The ImagePicker instance
|
// // The ImagePicker instance
|
||||||
final ImagePicker _imagePicker = ImagePicker();
|
// final ImagePicker _imagePicker = ImagePicker();
|
||||||
|
|
||||||
// The GoogleMlKit TextRecognizer instance
|
// // The GoogleMlKit TextRecognizer instance
|
||||||
final TextRecognizer _textRecognizer = TextRecognizer();
|
// // final TextRecognizer _textRecognizer = TextRecognizer();
|
||||||
|
|
||||||
// The scanned text
|
// // The scanned text
|
||||||
String? scannedText;
|
// String? scannedText;
|
||||||
String? jsonOutput;
|
// String? jsonOutput;
|
||||||
final List<Map<String, dynamic>> lines = [];
|
// final List<Map<String, dynamic>> lines = [];
|
||||||
Map extracted = {};
|
// Map extracted = {};
|
||||||
XFile? image;
|
// XFile? image;
|
||||||
CroppedFile? croppedFile;
|
// CroppedFile? croppedFile;
|
||||||
// Picks an image from the camera or gallery and extracts the text
|
// // Picks an image from the camera or gallery and extracts the text
|
||||||
final List<Map<String, dynamic>> extractedTextWithCoordinates = [];
|
// final List<Map<String, dynamic>> extractedTextWithCoordinates = [];
|
||||||
|
|
||||||
Future<void> scanText() async {
|
// Future<void> scanText() async {
|
||||||
// Pick an image from the camera or gallery
|
// // Pick an image from the camera or gallery
|
||||||
image = await _imagePicker.pickImage(source: ImageSource.gallery);
|
// image = await _imagePicker.pickImage(source: ImageSource.gallery);
|
||||||
update();
|
// update();
|
||||||
|
|
||||||
// If no image was picked, return
|
// // If no image was picked, return
|
||||||
if (image == null) {
|
// if (image == null) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Crop the image
|
// // Crop the image
|
||||||
croppedFile = await ImageCropper().cropImage(
|
// croppedFile = await ImageCropper().cropImage(
|
||||||
sourcePath: image!.path,
|
// sourcePath: image!.path,
|
||||||
//
|
// //
|
||||||
uiSettings: [
|
// uiSettings: [
|
||||||
AndroidUiSettings(
|
// AndroidUiSettings(
|
||||||
toolbarTitle: 'Cropper'.tr,
|
// toolbarTitle: 'Cropper'.tr,
|
||||||
toolbarColor: AppColor.blueColor,
|
// toolbarColor: AppColor.blueColor,
|
||||||
toolbarWidgetColor: AppColor.yellowColor,
|
// toolbarWidgetColor: AppColor.yellowColor,
|
||||||
initAspectRatio: CropAspectRatioPreset.original,
|
// initAspectRatio: CropAspectRatioPreset.original,
|
||||||
lockAspectRatio: false),
|
// lockAspectRatio: false),
|
||||||
IOSUiSettings(
|
// IOSUiSettings(
|
||||||
title: 'Cropper'.tr,
|
// title: 'Cropper'.tr,
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
);
|
// );
|
||||||
|
|
||||||
// If no cropped image was obtained, return
|
// // If no cropped image was obtained, return
|
||||||
if (croppedFile == null) {
|
// if (croppedFile == null) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Convert the cropped file to an InputImage object
|
// // Convert the cropped file to an InputImage object
|
||||||
final InputImage inputImage = InputImage.fromFile(File(croppedFile!.path));
|
// final InputImage inputImage = InputImage.fromFile(File(croppedFile!.path));
|
||||||
|
|
||||||
// Recognize the text in the image
|
// // Recognize the text in the image
|
||||||
final RecognizedText recognizedText =
|
// final RecognizedText recognizedText =
|
||||||
await _textRecognizer.processImage(inputImage);
|
// await _textRecognizer.processImage(inputImage);
|
||||||
scannedText = recognizedText.text;
|
// scannedText = recognizedText.text;
|
||||||
|
|
||||||
// Extract the scanned text line by line
|
// // Extract the scanned text line by line
|
||||||
final List<Map<String, dynamic>> lines = [];
|
// final List<Map<String, dynamic>> lines = [];
|
||||||
for (var i = 0; i < recognizedText.blocks.length; i++) {
|
// for (var i = 0; i < recognizedText.blocks.length; i++) {
|
||||||
lines.add({
|
// lines.add({
|
||||||
i.toString(): recognizedText.blocks[i].text,
|
// i.toString(): recognizedText.blocks[i].text,
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
String result = lines.map((map) => map.values.first.toString()).join(' ');
|
// String result = lines.map((map) => map.values.first.toString()).join(' ');
|
||||||
if (result.length > 2200) {
|
// if (result.length > 2200) {
|
||||||
result = result.substring(0, 2200);
|
// result = result.substring(0, 2200);
|
||||||
}
|
// }
|
||||||
Map result2 = await LlamaAi().getCarRegistrationData(result,
|
// Map result2 = await LlamaAi().getCarRegistrationData(result,
|
||||||
'vin,make,made,year,expiration_date,color,owner,registration_date'); //
|
// 'vin,make,made,year,expiration_date,color,owner,registration_date'); //
|
||||||
|
|
||||||
// Assign the result to the extracted variable
|
// // Assign the result to the extracted variable
|
||||||
extracted = result2;
|
// extracted = result2;
|
||||||
|
|
||||||
update();
|
// update();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ class RegisterCaptainController extends GetxController {
|
|||||||
'') {
|
'') {
|
||||||
Get.offAll(() => HomeCaptain());
|
Get.offAll(() => HomeCaptain());
|
||||||
} else {
|
} else {
|
||||||
Get.to(() => CarLicensePage());
|
// Get.to(() => CarLicensePage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ class NotificationController extends GetxController {
|
|||||||
requestAlertPermission: true,
|
requestAlertPermission: true,
|
||||||
requestBadgePermission: true,
|
requestBadgePermission: true,
|
||||||
requestSoundPermission: true,
|
requestSoundPermission: true,
|
||||||
onDidReceiveLocalNotification:
|
// onDidReceiveLocalNotification:
|
||||||
(int id, String? title, String? body, String? payload) async {},
|
// (int id, String? title, String? body, String? payload) async {},
|
||||||
);
|
);
|
||||||
InitializationSettings initializationSettings =
|
InitializationSettings initializationSettings =
|
||||||
InitializationSettings(android: android, iOS: ios);
|
InitializationSettings(android: android, iOS: ios);
|
||||||
@@ -176,11 +176,12 @@ class NotificationController extends GetxController {
|
|||||||
message,
|
message,
|
||||||
scheduledTime,
|
scheduledTime,
|
||||||
details,
|
details,
|
||||||
androidAllowWhileIdle: true,
|
// androidAllowWhileIdle: true,
|
||||||
uiLocalNotificationDateInterpretation:
|
uiLocalNotificationDateInterpretation:
|
||||||
UILocalNotificationDateInterpretation.absoluteTime,
|
UILocalNotificationDateInterpretation.absoluteTime,
|
||||||
matchDateTimeComponents:
|
matchDateTimeComponents: DateTimeComponents.time,
|
||||||
DateTimeComponents.time, // Triggers daily at the same time
|
androidScheduleMode:
|
||||||
|
AndroidScheduleMode.alarmClock, // Triggers daily at the same time
|
||||||
);
|
);
|
||||||
print('Notification scheduled successfully');
|
print('Notification scheduled successfully');
|
||||||
}
|
}
|
||||||
@@ -232,6 +233,7 @@ class NotificationController extends GetxController {
|
|||||||
uiLocalNotificationDateInterpretation:
|
uiLocalNotificationDateInterpretation:
|
||||||
UILocalNotificationDateInterpretation.absoluteTime,
|
UILocalNotificationDateInterpretation.absoluteTime,
|
||||||
matchDateTimeComponents: DateTimeComponents.time,
|
matchDateTimeComponents: DateTimeComponents.time,
|
||||||
|
androidScheduleMode: AndroidScheduleMode.alarmClock,
|
||||||
);
|
);
|
||||||
print('Notification scheduled successfully');
|
print('Notification scheduled successfully');
|
||||||
});
|
});
|
||||||
@@ -397,10 +399,11 @@ class NotificationController extends GetxController {
|
|||||||
message.tr,
|
message.tr,
|
||||||
scheduledTime,
|
scheduledTime,
|
||||||
details,
|
details,
|
||||||
androidAllowWhileIdle: true,
|
// androidAllowWhileIdle: true,
|
||||||
uiLocalNotificationDateInterpretation:
|
uiLocalNotificationDateInterpretation:
|
||||||
UILocalNotificationDateInterpretation.absoluteTime,
|
UILocalNotificationDateInterpretation.absoluteTime,
|
||||||
matchDateTimeComponents: DateTimeComponents.time,
|
matchDateTimeComponents: DateTimeComponents.time,
|
||||||
|
androidScheduleMode: AndroidScheduleMode.alarmClock,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'dart:io';
|
|||||||
|
|
||||||
import 'package:camera/camera.dart';
|
import 'package:camera/camera.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart';
|
// import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart';
|
||||||
import 'package:sefer_driver/constant/box_name.dart';
|
import 'package:sefer_driver/constant/box_name.dart';
|
||||||
import 'package:sefer_driver/constant/links.dart';
|
import 'package:sefer_driver/constant/links.dart';
|
||||||
import 'package:sefer_driver/views/widgets/elevated_btn.dart';
|
import 'package:sefer_driver/views/widgets/elevated_btn.dart';
|
||||||
@@ -16,7 +16,7 @@ class CameraClassController extends GetxController {
|
|||||||
late CameraController cameraController;
|
late CameraController cameraController;
|
||||||
late List<CameraDescription> cameras;
|
late List<CameraDescription> cameras;
|
||||||
bool isCameraInitialized = false;
|
bool isCameraInitialized = false;
|
||||||
final TextRecognizer _textRecognizer = TextRecognizer();
|
// final TextRecognizer _textRecognizer = TextRecognizer();
|
||||||
String? scannedText;
|
String? scannedText;
|
||||||
bool isloading = false;
|
bool isloading = false;
|
||||||
|
|
||||||
@@ -126,45 +126,45 @@ class CameraClassController extends GetxController {
|
|||||||
return responseString;
|
return responseString;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> takePictureAndMLGoogleScan() async {
|
// Future<void> takePictureAndMLGoogleScan() async {
|
||||||
try {
|
// try {
|
||||||
// Construct the path for the image file
|
// // Construct the path for the image file
|
||||||
final directory = await path_provider.getTemporaryDirectory();
|
// final directory = await path_provider.getTemporaryDirectory();
|
||||||
final imagePath =
|
// final imagePath =
|
||||||
path.join(directory.path, '${box.read(BoxName.driverID)}.png');
|
// path.join(directory.path, '${box.read(BoxName.driverID)}.png');
|
||||||
|
|
||||||
// Capture the image and save it to the specified path
|
// // Capture the image and save it to the specified path
|
||||||
final XFile capturedImage = await cameraController.takePicture();
|
// final XFile capturedImage = await cameraController.takePicture();
|
||||||
|
|
||||||
// Move the captured image to the desired path
|
// // Move the captured image to the desired path
|
||||||
await capturedImage.saveTo(imagePath);
|
// await capturedImage.saveTo(imagePath);
|
||||||
|
|
||||||
// Recognize the text in the image
|
// // Recognize the text in the image
|
||||||
final InputImage inputImage =
|
// final InputImage inputImage =
|
||||||
InputImage.fromFile(File(capturedImage.path));
|
// InputImage.fromFile(File(capturedImage.path));
|
||||||
final RecognizedText recognizedText =
|
// final RecognizedText recognizedText =
|
||||||
await _textRecognizer.processImage(inputImage);
|
// await _textRecognizer.processImage(inputImage);
|
||||||
scannedText = recognizedText.text;
|
// scannedText = recognizedText.text;
|
||||||
|
|
||||||
// Extract the scanned text line by line
|
// // Extract the scanned text line by line
|
||||||
final List<Map<String, dynamic>> lines = [];
|
// final List<Map<String, dynamic>> lines = [];
|
||||||
for (var i = 0; i < recognizedText.blocks.length; i++) {
|
// for (var i = 0; i < recognizedText.blocks.length; i++) {
|
||||||
lines.add({
|
// lines.add({
|
||||||
'line_number': i,
|
// 'line_number': i,
|
||||||
'text': recognizedText.blocks[i].text,
|
// 'text': recognizedText.blocks[i].text,
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Convert the list of lines to a JSON string
|
// // Convert the list of lines to a JSON string
|
||||||
final String jsonOutput = jsonEncode(lines);
|
// final String jsonOutput = jsonEncode(lines);
|
||||||
|
|
||||||
update();
|
// update();
|
||||||
|
|
||||||
// Print the JSON output
|
// // Print the JSON output
|
||||||
|
|
||||||
// Get.back();
|
// // Get.back();
|
||||||
} catch (e) {}
|
// } catch (e) {}
|
||||||
}
|
// }
|
||||||
|
|
||||||
String getTextAsJSON(String text) {
|
String getTextAsJSON(String text) {
|
||||||
final lines = text.split('\n');
|
final lines = text.split('\n');
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ enum DocumentType {
|
|||||||
carLicenseFront,
|
carLicenseFront,
|
||||||
carLicenseBack,
|
carLicenseBack,
|
||||||
idCardFront,
|
idCardFront,
|
||||||
|
nonIdCardFront,
|
||||||
|
nonIdCardBack,
|
||||||
idCardBack,
|
idCardBack,
|
||||||
driverLicense,
|
driverLicense,
|
||||||
unknown,
|
unknown,
|
||||||
@@ -150,6 +152,14 @@ class AI extends GetxController {
|
|||||||
// Check if the inspection date is before today
|
// Check if the inspection date is before today
|
||||||
final inspectionDateTime = DateTime(year, 12, 31);
|
final inspectionDateTime = DateTime(year, 12, 31);
|
||||||
final isInspectionExpired = inspectionDateTime.isBefore(today);
|
final isInspectionExpired = inspectionDateTime.isBefore(today);
|
||||||
|
// Add birthdate comparison for non-Egyptian ID
|
||||||
|
final frontBirthDate =
|
||||||
|
DateTime.tryParse(responseNonIdCardFront['birthdate'] ?? '');
|
||||||
|
final backBirthDate =
|
||||||
|
DateTime.tryParse(responseNonIdCardBack['birthDate'] ?? '');
|
||||||
|
final birthdatesMismatch = frontBirthDate != null &&
|
||||||
|
backBirthDate != null &&
|
||||||
|
frontBirthDate != backBirthDate;
|
||||||
|
|
||||||
if (isExpiredCar || isInspectionExpired) {
|
if (isExpiredCar || isInspectionExpired) {
|
||||||
Get.defaultDialog(
|
Get.defaultDialog(
|
||||||
@@ -186,6 +196,41 @@ class AI extends GetxController {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
} else if (birthdatesMismatch && !isEgypt) {
|
||||||
|
Get.defaultDialog(
|
||||||
|
title: 'Birthdate Mismatch'.tr,
|
||||||
|
content: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
const Icon(Icons.warning, size: 48, color: Colors.red),
|
||||||
|
const SizedBox(height: 16),
|
||||||
|
Text(
|
||||||
|
"The birthdate on your ID front doesn't match the one on the back. Please verify your documents."
|
||||||
|
.tr,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 16),
|
||||||
|
IconButton(
|
||||||
|
onPressed: () async {
|
||||||
|
await Get.find<TextToSpeechController>().speakText(
|
||||||
|
"The birthdate on your ID front doesn't match the one on the back. Please verify your documents."
|
||||||
|
.tr,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.volume_up),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
actions: [
|
||||||
|
TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
Get.back();
|
||||||
|
},
|
||||||
|
child: const Text('OK'),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
} else if (isExpired) {
|
} else if (isExpired) {
|
||||||
Get.defaultDialog(
|
Get.defaultDialog(
|
||||||
title: 'Expired Driver’s License'.tr,
|
title: 'Expired Driver’s License'.tr,
|
||||||
@@ -298,7 +343,7 @@ class AI extends GetxController {
|
|||||||
// );
|
// );
|
||||||
// }
|
// }
|
||||||
else {
|
else {
|
||||||
await addDriverEgypt();
|
isEgypt ? await addDriverEgypt() : await addDriverForeign();
|
||||||
await addRegistrationCarEgypt();
|
await addRegistrationCarEgypt();
|
||||||
|
|
||||||
if (isCarSaved && isDriverSaved) {
|
if (isCarSaved && isDriverSaved) {
|
||||||
@@ -343,6 +388,99 @@ class AI extends GetxController {
|
|||||||
return dob;
|
return dob;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> addDriverForeign() async {
|
||||||
|
isLoading = true;
|
||||||
|
update();
|
||||||
|
|
||||||
|
var payload = {
|
||||||
|
'first_name':
|
||||||
|
responseNonIdCardFront['full_name']?.toString().split(' ')[0] ??
|
||||||
|
'Not specified',
|
||||||
|
'last_name':
|
||||||
|
responseNonIdCardFront['full_name']?.toString().split(' ').last ??
|
||||||
|
'Not specified',
|
||||||
|
'email': box.read(BoxName.emailDriver)?.toString() ?? 'Not specified',
|
||||||
|
'phone': box.read(BoxName.phoneDriver)?.toString() ?? 'Not specified',
|
||||||
|
'id': box.read(BoxName.driverID)?.toString() ?? 'Not specified',
|
||||||
|
'password':
|
||||||
|
Get.put(LoginDriverController()).passwordController.text.isEmpty
|
||||||
|
? box.read(BoxName.emailDriver).toString()
|
||||||
|
: Get.find<LoginDriverController>()
|
||||||
|
.passwordController
|
||||||
|
.text
|
||||||
|
.toString(),
|
||||||
|
'gender': responseNonIdCardFront['gender']?.toString() ?? 'Not specified',
|
||||||
|
'license_type': 'Foreign',
|
||||||
|
'national_number':
|
||||||
|
responseNonIdCardFront['passport_no']?.toString() ?? 'Not specified',
|
||||||
|
'name_arabic':
|
||||||
|
responseNonIdCardFront['full_name']?.toString() ?? 'Not specified',
|
||||||
|
'name_english': 'Not specified',
|
||||||
|
'issue_date':
|
||||||
|
responseNonIdCardBack['issueDate']?.toString() ?? 'Not specified',
|
||||||
|
'expiry_date':
|
||||||
|
responseNonIdCardBack['residencyExpirationDate']?.toString() ??
|
||||||
|
'Not specified',
|
||||||
|
'license_categories': responseIdEgyptDriverLicense['license_categories']
|
||||||
|
is List
|
||||||
|
? responseIdEgyptDriverLicense['license_categories'].join(', ')
|
||||||
|
: responseIdEgyptDriverLicense['license_categories']?.toString() ??
|
||||||
|
'Not specified',
|
||||||
|
'address':
|
||||||
|
responseNonIdCardFront['address']?.toString() ?? 'Not specified',
|
||||||
|
'card_id':
|
||||||
|
responseNonIdCardFront['card_id']?.toString() ?? 'Not specified',
|
||||||
|
'occupation':
|
||||||
|
responseNonIdCardBack['workStatus']?.toString() ?? 'Not specified',
|
||||||
|
'education': 'Not specified',
|
||||||
|
'licenseIssueDate':
|
||||||
|
responseNonIdCardBack['issueDate']?.toString() ?? 'Not specified',
|
||||||
|
'religion':
|
||||||
|
responseNonIdCardFront['country']?.toString() ?? 'Not specified',
|
||||||
|
'status': 'yet',
|
||||||
|
'birthdate':
|
||||||
|
responseNonIdCardFront['birthdate']?.toString() ?? 'Not specified',
|
||||||
|
'maritalStatus': 'Not specified',
|
||||||
|
'site': responseNonIdCardFront['address']?.toString() ?? 'Not specified',
|
||||||
|
'employmentType':
|
||||||
|
responseNonIdCardBack['residencyType']?.toString() ?? 'Not specified',
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
var res = await CRUD().post(link: AppLink.signUpCaptin, payload: payload);
|
||||||
|
|
||||||
|
var status1;
|
||||||
|
try {
|
||||||
|
status1 = jsonDecode(res);
|
||||||
|
} catch (e) {
|
||||||
|
throw FormatException("Invalid JSON response: $res");
|
||||||
|
}
|
||||||
|
|
||||||
|
isLoading = false;
|
||||||
|
update();
|
||||||
|
|
||||||
|
if (status1['status'] == 'success') {
|
||||||
|
isDriverSaved = true;
|
||||||
|
CRUD().post(
|
||||||
|
link: '${AppLink.seferGizaServer}/auth/captin/register.php',
|
||||||
|
payload: payload);
|
||||||
|
CRUD().post(
|
||||||
|
link: '${AppLink.seferAlexandriaServer}/auth/captin/register.php',
|
||||||
|
payload: payload);
|
||||||
|
mySnackbarSuccess('Foreign driver data saved successfully');
|
||||||
|
} else {
|
||||||
|
mySnackeBarError(
|
||||||
|
'${'Failed to save driver data'.tr}: ${status1['message']}');
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
isLoading = false;
|
||||||
|
update();
|
||||||
|
mySnackeBarError(
|
||||||
|
'An error occurred while saving driver data'.tr,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> addDriverEgypt() async {
|
Future<void> addDriverEgypt() async {
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
update();
|
update();
|
||||||
@@ -542,16 +680,24 @@ class AI extends GetxController {
|
|||||||
Map<String, dynamic> responseForComplaint = {};
|
Map<String, dynamic> responseForComplaint = {};
|
||||||
Map<String, dynamic> responseIdCardDriverEgyptFront = {};
|
Map<String, dynamic> responseIdCardDriverEgyptFront = {};
|
||||||
Map<String, dynamic> responseIdEgyptFront = {};
|
Map<String, dynamic> responseIdEgyptFront = {};
|
||||||
|
Map<String, dynamic> responseNonIdCardFront = {};
|
||||||
|
Map<String, dynamic> responseNonIdCardBack = {};
|
||||||
Map<String, dynamic> responseCriminalRecordEgypt = {};
|
Map<String, dynamic> responseCriminalRecordEgypt = {};
|
||||||
Map<String, dynamic> responseIdEgyptBack = {};
|
Map<String, dynamic> responseIdEgyptBack = {};
|
||||||
Map<String, dynamic> responseIdEgyptDriverLicense = {};
|
Map<String, dynamic> responseIdEgyptDriverLicense = {};
|
||||||
String? responseIdCardDriverEgypt1;
|
String? responseIdCardDriverEgypt1;
|
||||||
bool isloading = false;
|
bool isloading = false;
|
||||||
bool isLoading = false;
|
bool isLoading = false;
|
||||||
|
bool isEgypt = true;
|
||||||
var image;
|
var image;
|
||||||
CroppedFile? croppedFile;
|
CroppedFile? croppedFile;
|
||||||
DateTime now = DateTime.now();
|
DateTime now = DateTime.now();
|
||||||
|
|
||||||
|
changeNationality() {
|
||||||
|
isEgypt = !isEgypt;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> pickImage() async {
|
Future<void> pickImage() async {
|
||||||
final pickedImage = await picker.pickImage(source: ImageSource.gallery);
|
final pickedImage = await picker.pickImage(source: ImageSource.gallery);
|
||||||
|
|
||||||
@@ -607,6 +753,12 @@ class AI extends GetxController {
|
|||||||
],
|
],
|
||||||
DocumentType.idCardBack: ['البطاقةساريةحتى'],
|
DocumentType.idCardBack: ['البطاقةساريةحتى'],
|
||||||
DocumentType.driverLicense: ['قيادةخاصة', 'خاصه', 'قيادة'],
|
DocumentType.driverLicense: ['قيادةخاصة', 'خاصه', 'قيادة'],
|
||||||
|
DocumentType.nonIdCardFront: ['Foreign Residence Card', 'أجنبي', 'جواز'],
|
||||||
|
DocumentType.nonIdCardBack: [
|
||||||
|
'نوع الإقامة',
|
||||||
|
'الإقامة',
|
||||||
|
'Cardexpiresbyendofresidencepermit'
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
// Check each document type
|
// Check each document type
|
||||||
@@ -637,7 +789,10 @@ class AI extends GetxController {
|
|||||||
var extractedString =
|
var extractedString =
|
||||||
await CRUD().arabicTextExtractByVisionAndAI(imagePath: imagePath);
|
await CRUD().arabicTextExtractByVisionAndAI(imagePath: imagePath);
|
||||||
var json = jsonDecode(extractedString);
|
var json = jsonDecode(extractedString);
|
||||||
|
// Log.print('extractedString: ${extractedString}');
|
||||||
var textValues = CRUD().extractTextFromLines(json);
|
var textValues = CRUD().extractTextFromLines(json);
|
||||||
|
Log.print('textValues: ${textValues}');
|
||||||
|
// Log.print('json: ${json}');
|
||||||
|
|
||||||
DocumentType detectedType = checkDocumentType(textValues);
|
DocumentType detectedType = checkDocumentType(textValues);
|
||||||
String expectedDocument = getExpectedDocument(imagePath);
|
String expectedDocument = getExpectedDocument(imagePath);
|
||||||
@@ -720,6 +875,10 @@ class AI extends GetxController {
|
|||||||
return 'id_card_back'.tr;
|
return 'id_card_back'.tr;
|
||||||
case 'id_front':
|
case 'id_front':
|
||||||
return 'id_card_front'.tr;
|
return 'id_card_front'.tr;
|
||||||
|
case 'non_id_front':
|
||||||
|
return 'non_id_card_front'.tr;
|
||||||
|
case 'non_id_back':
|
||||||
|
return 'non_id_card_back'.tr;
|
||||||
case 'driver_license':
|
case 'driver_license':
|
||||||
return 'driver_license'.tr;
|
return 'driver_license'.tr;
|
||||||
default:
|
default:
|
||||||
@@ -737,6 +896,10 @@ class AI extends GetxController {
|
|||||||
return DocumentType.idCardBack;
|
return DocumentType.idCardBack;
|
||||||
case 'id_front':
|
case 'id_front':
|
||||||
return DocumentType.idCardFront;
|
return DocumentType.idCardFront;
|
||||||
|
case 'non_id_front':
|
||||||
|
return DocumentType.nonIdCardFront;
|
||||||
|
case 'non_id_back':
|
||||||
|
return DocumentType.nonIdCardBack;
|
||||||
case 'driver_license':
|
case 'driver_license':
|
||||||
return DocumentType.driverLicense;
|
return DocumentType.driverLicense;
|
||||||
default:
|
default:
|
||||||
@@ -754,6 +917,10 @@ class AI extends GetxController {
|
|||||||
return 'id_card_front'.tr;
|
return 'id_card_front'.tr;
|
||||||
case DocumentType.idCardBack:
|
case DocumentType.idCardBack:
|
||||||
return 'id_card_back'.tr;
|
return 'id_card_back'.tr;
|
||||||
|
case DocumentType.nonIdCardFront:
|
||||||
|
return 'non_id_card_front'.tr;
|
||||||
|
case DocumentType.nonIdCardBack:
|
||||||
|
return 'non_id_card_back'.tr;
|
||||||
case DocumentType.driverLicense:
|
case DocumentType.driverLicense:
|
||||||
return 'driver_license'.tr;
|
return 'driver_license'.tr;
|
||||||
default:
|
default:
|
||||||
@@ -938,6 +1105,11 @@ class AI extends GetxController {
|
|||||||
} else if (idType == 'criminalRecord') {
|
} else if (idType == 'criminalRecord') {
|
||||||
responseCriminalRecordEgypt =
|
responseCriminalRecordEgypt =
|
||||||
jsonDecode(responseData['content'][0]['text']);
|
jsonDecode(responseData['content'][0]['text']);
|
||||||
|
} else if (idType == 'non_id_front') {
|
||||||
|
responseNonIdCardFront = jsonDecode(responseData['content'][0]['text']);
|
||||||
|
Log.print('responseNonIdCardFront: ${responseNonIdCardFront}');
|
||||||
|
} else if (idType == 'non_id_back') {
|
||||||
|
responseNonIdCardBack = jsonDecode(responseData['content'][0]['text']);
|
||||||
}
|
}
|
||||||
|
|
||||||
update();
|
update();
|
||||||
@@ -1014,6 +1186,12 @@ class AI extends GetxController {
|
|||||||
responseIdEgyptBack = jsonDecode(jsonString);
|
responseIdEgyptBack = jsonDecode(jsonString);
|
||||||
} else if (idType == 'driver_license') {
|
} else if (idType == 'driver_license') {
|
||||||
responseIdEgyptDriverLicense = jsonDecode(jsonString);
|
responseIdEgyptDriverLicense = jsonDecode(jsonString);
|
||||||
|
} else if (idType == 'non_id_front') {
|
||||||
|
responseNonIdCardFront =
|
||||||
|
jsonDecode(responseData['content'][0]['text']);
|
||||||
|
} else if (idType == 'non_id_back') {
|
||||||
|
responseNonIdCardBack =
|
||||||
|
jsonDecode(responseData['content'][0]['text']);
|
||||||
}
|
}
|
||||||
|
|
||||||
update();
|
update();
|
||||||
|
|||||||
@@ -1,21 +1,20 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:sefer_driver/controller/home/captin/home_captain_controller.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||||
import 'package:location/location.dart';
|
import 'package:location/location.dart';
|
||||||
import 'package:sefer_driver/constant/box_name.dart';
|
|
||||||
import 'package:sefer_driver/constant/links.dart';
|
|
||||||
import 'package:sefer_driver/controller/functions/crud.dart';
|
|
||||||
import 'package:sefer_driver/controller/home/payment/captain_wallet_controller.dart';
|
|
||||||
import 'package:sefer_driver/main.dart';
|
|
||||||
|
|
||||||
|
import '../../constant/box_name.dart';
|
||||||
|
import '../../constant/links.dart';
|
||||||
|
import '../../main.dart';
|
||||||
import '../../print.dart';
|
import '../../print.dart';
|
||||||
|
import '../home/captin/home_captain_controller.dart';
|
||||||
|
import '../home/payment/captain_wallet_controller.dart';
|
||||||
|
import 'crud.dart';
|
||||||
|
|
||||||
// LocationController.dart
|
|
||||||
class LocationController extends GetxController {
|
class LocationController extends GetxController {
|
||||||
LocationData? _currentLocation;
|
LocationData? _currentLocation;
|
||||||
late Location location;
|
late Location location = Location();
|
||||||
bool isLoading = false;
|
bool isLoading = false;
|
||||||
late double heading = 0;
|
late double heading = 0;
|
||||||
late double accuracy = 0;
|
late double accuracy = 0;
|
||||||
@@ -28,7 +27,7 @@ class LocationController extends GetxController {
|
|||||||
late double speedAccuracy = 0;
|
late double speedAccuracy = 0;
|
||||||
late double headingAccuracy = 0;
|
late double headingAccuracy = 0;
|
||||||
bool isActive = false;
|
bool isActive = false;
|
||||||
late LatLng myLocation;
|
late LatLng myLocation = LatLng(0, 0); // Default value
|
||||||
String totalPoints = '0';
|
String totalPoints = '0';
|
||||||
LocationData? get currentLocation => _currentLocation;
|
LocationData? get currentLocation => _currentLocation;
|
||||||
Timer? _locationTimer;
|
Timer? _locationTimer;
|
||||||
@@ -36,13 +35,13 @@ class LocationController extends GetxController {
|
|||||||
@override
|
@override
|
||||||
void onInit() async {
|
void onInit() async {
|
||||||
super.onInit();
|
super.onInit();
|
||||||
location = Location();
|
location = Location(); // Initialize the location object
|
||||||
getLocation();
|
await getLocation(); // Fetch the location immediately
|
||||||
// startLocationUpdates();
|
startLocationUpdates(); // Start periodic location updates
|
||||||
|
|
||||||
totalPoints = Get.put(CaptainWalletController()).totalPoints.toString();
|
totalPoints = Get.put(CaptainWalletController()).totalPoints.toString();
|
||||||
// isActive = Get.put(HomeCaptainController()).isActive;
|
isActive = Get.put(HomeCaptainController()).isActive;
|
||||||
} // Function to determine which area the coordinates belong to
|
}
|
||||||
|
|
||||||
String getLocationArea(double latitude, double longitude) {
|
String getLocationArea(double latitude, double longitude) {
|
||||||
if (latitude >= 29.918901 &&
|
if (latitude >= 29.918901 &&
|
||||||
@@ -67,6 +66,10 @@ class LocationController extends GetxController {
|
|||||||
|
|
||||||
Future<void> startLocationUpdates() async {
|
Future<void> startLocationUpdates() async {
|
||||||
if (box.read(BoxName.driverID) != null) {
|
if (box.read(BoxName.driverID) != null) {
|
||||||
|
if (location == null) {
|
||||||
|
location = Location(); // Ensure location is initialized
|
||||||
|
}
|
||||||
|
|
||||||
_locationTimer =
|
_locationTimer =
|
||||||
Timer.periodic(const Duration(seconds: 5), (timer) async {
|
Timer.periodic(const Duration(seconds: 5), (timer) async {
|
||||||
try {
|
try {
|
||||||
@@ -77,10 +80,12 @@ class LocationController extends GetxController {
|
|||||||
if (isActive) {
|
if (isActive) {
|
||||||
if (double.parse(totalPoints) > -300) {
|
if (double.parse(totalPoints) > -300) {
|
||||||
await getLocation();
|
await getLocation();
|
||||||
|
if (myLocation == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
print(
|
print(
|
||||||
'Latitude: ${myLocation.latitude}, Longitude: ${myLocation.longitude}');
|
'Latitude: ${myLocation.latitude}, Longitude: ${myLocation.longitude}');
|
||||||
|
|
||||||
// Determine the area
|
|
||||||
String area =
|
String area =
|
||||||
getLocationArea(myLocation.latitude, myLocation.longitude);
|
getLocationArea(myLocation.latitude, myLocation.longitude);
|
||||||
print('Determined Area: $area');
|
print('Determined Area: $area');
|
||||||
@@ -89,56 +94,25 @@ class LocationController extends GetxController {
|
|||||||
|
|
||||||
switch (area) {
|
switch (area) {
|
||||||
case 'Cairo':
|
case 'Cairo':
|
||||||
print('Area matched: Cairo');
|
|
||||||
box.write(BoxName.serverChosen, AppLink.seferCairoServer);
|
box.write(BoxName.serverChosen, AppLink.seferCairoServer);
|
||||||
endpoint = AppLink.addCarsLocationCairoEndpoint;
|
endpoint = AppLink.addCarsLocationCairoEndpoint;
|
||||||
break;
|
break;
|
||||||
case 'Giza':
|
case 'Giza':
|
||||||
print('Area matched: Giza');
|
|
||||||
box.write(BoxName.serverChosen, AppLink.seferGizaServer);
|
box.write(BoxName.serverChosen, AppLink.seferGizaServer);
|
||||||
endpoint = AppLink.addCarsLocationGizaEndpoint;
|
endpoint = AppLink.addCarsLocationGizaEndpoint;
|
||||||
break;
|
break;
|
||||||
case 'Alexandria':
|
case 'Alexandria':
|
||||||
print('Area matched: Alexandria');
|
|
||||||
box.write(
|
box.write(
|
||||||
BoxName.serverChosen, AppLink.seferAlexandriaServer);
|
BoxName.serverChosen, AppLink.seferAlexandriaServer);
|
||||||
endpoint = AppLink.addCarsLocationAlexandriaEndpoint;
|
endpoint = AppLink.addCarsLocationAlexandriaEndpoint;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
print('Unknown location area. Fallback to Cairo');
|
|
||||||
endpoint = AppLink.addCarsLocationCairoEndpoint;
|
endpoint = AppLink.addCarsLocationCairoEndpoint;
|
||||||
box.write(BoxName.serverChosen, AppLink.seferCairoServer);
|
box.write(BoxName.serverChosen, AppLink.seferCairoServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.print('Final Endpoint: $endpoint');
|
Log.print('Final Endpoint: $endpoint');
|
||||||
switch (area) {
|
|
||||||
case 'Cairo':
|
|
||||||
box.write(BoxName.serverChosen, AppLink.seferCairoServer);
|
|
||||||
endpoint = AppLink.addCarsLocationCairoEndpoint;
|
|
||||||
Log.print('Endpoint: $endpoint');
|
|
||||||
break;
|
|
||||||
case 'Giza':
|
|
||||||
box.write(BoxName.serverChosen, AppLink.seferGizaServer);
|
|
||||||
endpoint = AppLink.addCarsLocationGizaEndpoint;
|
|
||||||
Log.print('Endpoint: $endpoint');
|
|
||||||
break;
|
|
||||||
case 'Alexandria':
|
|
||||||
box.write(
|
|
||||||
BoxName.serverChosen, AppLink.seferAlexandriaServer);
|
|
||||||
endpoint = AppLink.addCarsLocationAlexandriaEndpoint;
|
|
||||||
Log.print('Endpoint: $endpoint');
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
// Handle any other unexpected cases
|
|
||||||
print('Unknown location area');
|
|
||||||
endpoint = AppLink
|
|
||||||
.addCarsLocationCairoEndpoint; // Fallback to Cairo endpoint
|
|
||||||
Log.print('Fallback Endpoint: $endpoint');
|
|
||||||
box.write(BoxName.serverChosen, AppLink.seferCairoServer);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure driver ID exists before making the API call
|
|
||||||
if (box.read(BoxName.driverID) != null) {
|
if (box.read(BoxName.driverID) != null) {
|
||||||
await CRUD().post(link: endpoint, payload: {
|
await CRUD().post(link: endpoint, payload: {
|
||||||
'driver_id': box.read(BoxName.driverID).toString(),
|
'driver_id': box.read(BoxName.driverID).toString(),
|
||||||
@@ -154,7 +128,6 @@ class LocationController extends GetxController {
|
|||||||
'status': box.read(BoxName.statusDriverLocation).toString(),
|
'status': box.read(BoxName.statusDriverLocation).toString(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Update the camera position on the map
|
|
||||||
Get.find<HomeCaptainController>()
|
Get.find<HomeCaptainController>()
|
||||||
.mapHomeCaptainController
|
.mapHomeCaptainController
|
||||||
?.animateCamera(
|
?.animateCamera(
|
||||||
@@ -169,7 +142,6 @@ class LocationController extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// Handle the error gracefully
|
|
||||||
Log.print('Error during location update: $e');
|
Log.print('Error during location update: $e');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -181,75 +153,58 @@ class LocationController extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> getLocation() async {
|
Future<void> getLocation() async {
|
||||||
// isLoading = true;
|
if (location == null) {
|
||||||
// update();
|
location = Location(); // Ensure location is initialized
|
||||||
|
}
|
||||||
|
|
||||||
bool serviceEnabled;
|
bool serviceEnabled;
|
||||||
PermissionStatus permissionGranted;
|
PermissionStatus permissionGranted;
|
||||||
|
|
||||||
// Check if location services are enabled
|
|
||||||
serviceEnabled = await location.serviceEnabled();
|
serviceEnabled = await location.serviceEnabled();
|
||||||
if (!serviceEnabled) {
|
if (!serviceEnabled) {
|
||||||
serviceEnabled = await location.requestService();
|
serviceEnabled = await location.requestService();
|
||||||
if (!serviceEnabled) {
|
if (!serviceEnabled) {
|
||||||
// Location services are still not enabled, handle the error
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the app has permission to access location
|
|
||||||
permissionGranted = await location.hasPermission();
|
permissionGranted = await location.hasPermission();
|
||||||
if (permissionGranted == PermissionStatus.denied) {
|
if (permissionGranted == PermissionStatus.denied) {
|
||||||
permissionGranted = await location.requestPermission();
|
permissionGranted = await location.requestPermission();
|
||||||
if (permissionGranted != PermissionStatus.granted) {
|
if (permissionGranted != PermissionStatus.granted) {
|
||||||
// Location permission is still not granted, handle the error
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configure location accuracy
|
|
||||||
// LocationAccuracy desiredAccuracy = LocationAccuracy.high;
|
|
||||||
|
|
||||||
// Get the current location
|
|
||||||
LocationData _locationData = await location.getLocation();
|
LocationData _locationData = await location.getLocation();
|
||||||
myLocation =
|
if (_locationData.latitude != null && _locationData.longitude != null) {
|
||||||
(_locationData.latitude != null && _locationData.longitude != null
|
myLocation = LatLng(_locationData.latitude!, _locationData.longitude!);
|
||||||
? LatLng(_locationData.latitude!, _locationData.longitude!)
|
} else {
|
||||||
: null)!;
|
myLocation = LatLng(0, 0); // Default value
|
||||||
getLocationArea(_locationData.latitude!, _locationData.longitude!);
|
}
|
||||||
speed = _locationData.speed!;
|
|
||||||
heading = _locationData.heading!;
|
speed = _locationData.speed ?? 0;
|
||||||
// Calculate the distance between the current location and the previous location
|
heading = _locationData.heading ?? 0;
|
||||||
|
|
||||||
if (Get.find<HomeCaptainController>().rideId == 'rideId') {
|
if (Get.find<HomeCaptainController>().rideId == 'rideId') {
|
||||||
Log.print(
|
|
||||||
'Get.find<HomeCaptainController>().rideId: ${Get.find<HomeCaptainController>().rideId}');
|
|
||||||
if (previousTime > 0) {
|
if (previousTime > 0) {
|
||||||
double distance = calculateDistanceInKmPerHour(
|
double distance = calculateDistanceInKmPerHour(
|
||||||
previousTime, _locationData.time, speed);
|
previousTime, _locationData.time, speed);
|
||||||
totalDistance += distance;
|
totalDistance += distance;
|
||||||
}
|
}
|
||||||
|
previousTime = _locationData.time ?? 0;
|
||||||
previousTime = _locationData.time!;
|
|
||||||
}
|
}
|
||||||
// Print location details
|
|
||||||
// isLoading = false;
|
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
double calculateDistanceInKmPerHour(
|
double calculateDistanceInKmPerHour(
|
||||||
double? startTime, double? endTime, double speedInMetersPerSecond) {
|
double? startTime, double? endTime, double speedInMetersPerSecond) {
|
||||||
// Calculate the time difference in hours
|
double timeDifferenceInHours =
|
||||||
double timeDifferenceInHours = (endTime! - startTime!) / 1000 / 3600;
|
(endTime ?? 0 - startTime! ?? 0) / 1000 / 3600;
|
||||||
|
|
||||||
// Convert speed to kilometers per hour
|
|
||||||
double speedInKmPerHour = speedInMetersPerSecond * 3.6;
|
double speedInKmPerHour = speedInMetersPerSecond * 3.6;
|
||||||
|
|
||||||
// Calculate the distance in kilometers
|
|
||||||
double distanceInKilometers = speedInKmPerHour * timeDifferenceInHours;
|
double distanceInKilometers = speedInKmPerHour * timeDifferenceInHours;
|
||||||
|
|
||||||
// Convert distance from kilometers to meters
|
|
||||||
double distanceInMeters = distanceInKilometers * 1000;
|
double distanceInMeters = distanceInKilometers * 1000;
|
||||||
|
|
||||||
// If the calculated distance is less than 6 meters, return 0 to avoid fake distance
|
|
||||||
return distanceInMeters < 5 ? 0 : distanceInKilometers;
|
return distanceInMeters < 5 ? 0 : distanceInKilometers;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class HomeCaptainController extends GetxController {
|
|||||||
isActive = !isActive;
|
isActive = !isActive;
|
||||||
if (isActive) {
|
if (isActive) {
|
||||||
if (double.parse(totalPoints) > -300) {
|
if (double.parse(totalPoints) > -300) {
|
||||||
locationController.startLocationUpdates();
|
// locationController.startLocationUpdates();
|
||||||
// locationBackController.startBackLocation();
|
// locationBackController.startBackLocation();
|
||||||
activeStartTime = DateTime.now();
|
activeStartTime = DateTime.now();
|
||||||
activeTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
|
activeTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
|
||||||
|
|||||||
@@ -584,7 +584,7 @@ class MapDriverController extends GetxController {
|
|||||||
Get.find<LocationController>().myLocation.longitude,
|
Get.find<LocationController>().myLocation.longitude,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (distanceToDestination > double.parse(distance.toString()) / 3) {
|
if (distanceToDestination > (double.parse(distance.toString()) / 3)) {
|
||||||
Log.print('distanceToDestination: ${distanceToDestination}');
|
Log.print('distanceToDestination: ${distanceToDestination}');
|
||||||
|
|
||||||
MyDialog().getDialog(
|
MyDialog().getDialog(
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ class MyTranslation extends Translations {
|
|||||||
'Remaining time': 'الوقت المتبقي',
|
'Remaining time': 'الوقت المتبقي',
|
||||||
'Add bank Account': 'إضافة حساب بنكي',
|
'Add bank Account': 'إضافة حساب بنكي',
|
||||||
'Are you sure to exit ride?': 'هل أنت متأكد من إنهاء الرحلة؟',
|
'Are you sure to exit ride?': 'هل أنت متأكد من إنهاء الرحلة؟',
|
||||||
|
"Today": "اليوم",
|
||||||
"seconds": "ثواني",
|
"seconds": "ثواني",
|
||||||
'You will cancel registration': 'ستقوم بإلغاء التسجيل',
|
'You will cancel registration': 'ستقوم بإلغاء التسجيل',
|
||||||
"Create new Account": "إنشاء حساب جديد",
|
"Create new Account": "إنشاء حساب جديد",
|
||||||
|
|||||||
@@ -81,8 +81,8 @@ class RideAvailableController extends GetxController {
|
|||||||
getRideAvailable() async {
|
getRideAvailable() async {
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
LatLngBounds bounds = calculateBounds(
|
LatLngBounds bounds = calculateBounds(
|
||||||
Get.find<LocationController>().myLocation.latitude,
|
Get.find<LocationController>().myLocation!.latitude,
|
||||||
Get.find<LocationController>().myLocation.longitude,
|
Get.find<LocationController>().myLocation!.longitude,
|
||||||
4000);
|
4000);
|
||||||
var payload = {
|
var payload = {
|
||||||
// "carType": box.read(BoxName.carTypeOfDriver).toString(),
|
// "carType": box.read(BoxName.carTypeOfDriver).toString(),
|
||||||
|
|||||||
@@ -44,7 +44,8 @@ class RateController extends GetxController {
|
|||||||
Future addPassengerWallet() async {
|
Future addPassengerWallet() async {
|
||||||
if (formKey.currentState!.validate()) {
|
if (formKey.currentState!.validate()) {
|
||||||
var priceOfTrip =
|
var priceOfTrip =
|
||||||
double.parse(Get.find<MapDriverController>().paymentAmount);
|
double.parse(price.toString());
|
||||||
|
// double.parse(Get.find<MapDriverController>().paymentAmount);
|
||||||
double remainingFee = double.parse(passengerPayAmount.text) - priceOfTrip;
|
double remainingFee = double.parse(passengerPayAmount.text) - priceOfTrip;
|
||||||
if (remainingFee > 0) {
|
if (remainingFee > 0) {
|
||||||
var paymentToken2 = await Get.find<MapDriverController>()
|
var paymentToken2 = await Get.find<MapDriverController>()
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import 'constant/notification.dart';
|
|||||||
import 'controller/firebase/firbase_messge.dart';
|
import 'controller/firebase/firbase_messge.dart';
|
||||||
import 'controller/firebase/local_notification.dart';
|
import 'controller/firebase/local_notification.dart';
|
||||||
import 'controller/functions/location_controller.dart';
|
import 'controller/functions/location_controller.dart';
|
||||||
import 'controller/functions/overlay_permisssion.dart';
|
|
||||||
import 'controller/local/local_controller.dart';
|
import 'controller/local/local_controller.dart';
|
||||||
import 'controller/local/translations.dart';
|
import 'controller/local/translations.dart';
|
||||||
import 'controller/payment/paymob/paymob_wallet.dart';
|
import 'controller/payment/paymob/paymob_wallet.dart';
|
||||||
|
|||||||
@@ -10,160 +10,160 @@ import '../../../controller/auth/captin/register_captin_controller.dart';
|
|||||||
import '../../widgets/elevated_btn.dart';
|
import '../../widgets/elevated_btn.dart';
|
||||||
import '../../widgets/my_scafold.dart';
|
import '../../widgets/my_scafold.dart';
|
||||||
|
|
||||||
class CarLicensePage extends StatelessWidget {
|
// class CarLicensePage extends StatelessWidget {
|
||||||
CarLicensePage({super.key});
|
// CarLicensePage({super.key});
|
||||||
CarRegistrationRecognizerController carRegistrationRecognizerController =
|
// // CarRegistrationRecognizerController carRegistrationRecognizerController =
|
||||||
Get.put(CarRegistrationRecognizerController());
|
// // Get.put(CarRegistrationRecognizerController());
|
||||||
RegisterCaptainController registerCaptainController =
|
// RegisterCaptainController registerCaptainController =
|
||||||
Get.put(RegisterCaptainController());
|
// Get.put(RegisterCaptainController());
|
||||||
|
|
||||||
@override
|
// @override
|
||||||
Widget build(BuildContext context) {
|
// Widget build(BuildContext context) {
|
||||||
Get.find<ScanDocumentsByApi>().uploadImagePortrate();
|
// Get.find<ScanDocumentsByApi>().uploadImagePortrate();
|
||||||
return MyScafolld(
|
// return MyScafolld(
|
||||||
title: 'Car License Card'.tr,
|
// title: 'Car License Card'.tr,
|
||||||
body: [
|
// body: [
|
||||||
Positioned(
|
// Positioned(
|
||||||
top: 3,
|
// top: 3,
|
||||||
left: Get.width * .2,
|
// left: Get.width * .2,
|
||||||
right: Get.width * .2,
|
// right: Get.width * .2,
|
||||||
child: MyElevatedButton(
|
// child: MyElevatedButton(
|
||||||
title: 'Take Picture Of ID Card'.tr,
|
// title: 'Take Picture Of ID Card'.tr,
|
||||||
onPressed: () async {
|
// onPressed: () async {
|
||||||
//0vQRyaYYDWpsv73A5CZOknseK7S2sgwE
|
// //0vQRyaYYDWpsv73A5CZOknseK7S2sgwE
|
||||||
//3vQRyaYYSWpmv69A58ZOkxmeK6M1mgwEDlXrXlBl
|
// //3vQRyaYYSWpmv69A58ZOkxmeK6M1mgwEDlXrXlBl
|
||||||
//0pALdqDDYHvzp73Q59SIgbzjG7Z2zkhJXr
|
// //0pALdqDDYHvzp73Q59SIgbzjG7Z2zkhJXr
|
||||||
// String? visionApi = AK.serverPHP;
|
// // String? visionApi = AK.serverPHP;
|
||||||
await carRegistrationRecognizerController.scanText();
|
// await carRegistrationRecognizerController.scanText();
|
||||||
},
|
// },
|
||||||
)),
|
// )),
|
||||||
Positioned(
|
// Positioned(
|
||||||
top: 50,
|
// top: 50,
|
||||||
child: SizedBox(
|
// child: SizedBox(
|
||||||
height: Get.height * .6,
|
// height: Get.height * .6,
|
||||||
width: Get.width,
|
// width: Get.width,
|
||||||
child: buildImageWithBoundingBoxes(),
|
// child: buildImageWithBoundingBoxes(),
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
Positioned(
|
// Positioned(
|
||||||
bottom: Get.height * .2,
|
// bottom: Get.height * .2,
|
||||||
left: Get.width * .2,
|
// left: Get.width * .2,
|
||||||
right: Get.width * .2,
|
// right: Get.width * .2,
|
||||||
child: MyElevatedButton(
|
// child: MyElevatedButton(
|
||||||
title: 'Register'.tr,
|
// title: 'Register'.tr,
|
||||||
onPressed: () async {
|
// onPressed: () async {
|
||||||
// registerCaptainController.addLisence();
|
// // registerCaptainController.addLisence();
|
||||||
// registerCaptainController.register();
|
// // registerCaptainController.register();
|
||||||
registerCaptainController.addRegisrationCarForDriver(
|
// registerCaptainController.addRegisrationCarForDriver(
|
||||||
carRegistrationRecognizerController.extracted['vin'],
|
// carRegistrationRecognizerController.extracted['vin'],
|
||||||
carRegistrationRecognizerController.extracted['make'],
|
// carRegistrationRecognizerController.extracted['make'],
|
||||||
carRegistrationRecognizerController.extracted['model'],
|
// carRegistrationRecognizerController.extracted['model'],
|
||||||
carRegistrationRecognizerController.extracted['year'],
|
// carRegistrationRecognizerController.extracted['year'],
|
||||||
carRegistrationRecognizerController.extracted['color'],
|
// carRegistrationRecognizerController.extracted['color'],
|
||||||
carRegistrationRecognizerController.extracted['owner'],
|
// carRegistrationRecognizerController.extracted['owner'],
|
||||||
carRegistrationRecognizerController
|
// carRegistrationRecognizerController
|
||||||
.extracted['expiration_date'],
|
// .extracted['expiration_date'],
|
||||||
carRegistrationRecognizerController
|
// carRegistrationRecognizerController
|
||||||
.extracted['registration_date'],
|
// .extracted['registration_date'],
|
||||||
);
|
// );
|
||||||
},
|
// },
|
||||||
)),
|
// )),
|
||||||
],
|
// ],
|
||||||
isleading: true);
|
// isleading: true);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
Widget buildImageWithBoundingBoxes() {
|
// Widget buildImageWithBoundingBoxes() {
|
||||||
Get.put(CarRegistrationRecognizerController());
|
// Get.put(CarRegistrationRecognizerController());
|
||||||
return GetBuilder<CarRegistrationRecognizerController>(
|
// return GetBuilder<CarRegistrationRecognizerController>(
|
||||||
builder: (carRegistrationRecognizerController) =>
|
// builder: (carRegistrationRecognizerController) =>
|
||||||
carRegistrationRecognizerController.image == null ||
|
// carRegistrationRecognizerController.image == null ||
|
||||||
carRegistrationRecognizerController.extracted.isEmpty
|
// carRegistrationRecognizerController.extracted.isEmpty
|
||||||
? Center(
|
// ? Center(
|
||||||
child: Text(
|
// child: Text(
|
||||||
'No image selected yet'.tr,
|
// 'No image selected yet'.tr,
|
||||||
style: AppStyle.headTitle2,
|
// style: AppStyle.headTitle2,
|
||||||
))
|
// ))
|
||||||
: Column(
|
// : Column(
|
||||||
children: [
|
// children: [
|
||||||
SizedBox(
|
// SizedBox(
|
||||||
width: Get.width * .8,
|
// width: Get.width * .8,
|
||||||
height: Get.width * .5,
|
// height: Get.width * .5,
|
||||||
child: Image.file(
|
// child: Image.file(
|
||||||
File(carRegistrationRecognizerController
|
// File(carRegistrationRecognizerController
|
||||||
.croppedFile!.path),
|
// .croppedFile!.path),
|
||||||
// fit: BoxFit.fill,
|
// // fit: BoxFit.fill,
|
||||||
)),
|
// )),
|
||||||
const SizedBox(
|
// const SizedBox(
|
||||||
height: 20,
|
// height: 20,
|
||||||
),
|
// ),
|
||||||
Container(
|
// Container(
|
||||||
decoration: AppStyle.boxDecoration,
|
// decoration: AppStyle.boxDecoration,
|
||||||
height: Get.width * .5,
|
// height: Get.width * .5,
|
||||||
width: Get.width * .9,
|
// width: Get.width * .9,
|
||||||
child: Column(
|
// child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
// mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
children: [
|
// children: [
|
||||||
Row(
|
// Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
// mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
children: [
|
// children: [
|
||||||
Text(
|
// Text(
|
||||||
'${'Made :'.tr}${carRegistrationRecognizerController.extracted['make']}',
|
// '${'Made :'.tr}${carRegistrationRecognizerController.extracted['make']}',
|
||||||
style: AppStyle.title,
|
// style: AppStyle.title,
|
||||||
),
|
// ),
|
||||||
Text(
|
// Text(
|
||||||
'${'model :'.tr}${carRegistrationRecognizerController.extracted['model']}',
|
// '${'model :'.tr}${carRegistrationRecognizerController.extracted['model']}',
|
||||||
style: AppStyle.title,
|
// style: AppStyle.title,
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
Row(
|
// Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
// mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
children: [
|
// children: [
|
||||||
Text(
|
// Text(
|
||||||
'${'VIN :'.tr}${carRegistrationRecognizerController.extracted['vin']}',
|
// '${'VIN :'.tr}${carRegistrationRecognizerController.extracted['vin']}',
|
||||||
style: AppStyle.title,
|
// style: AppStyle.title,
|
||||||
),
|
// ),
|
||||||
Text(
|
// Text(
|
||||||
'${'year :'.tr}${carRegistrationRecognizerController.extracted['year']}',
|
// '${'year :'.tr}${carRegistrationRecognizerController.extracted['year']}',
|
||||||
style: AppStyle.title,
|
// style: AppStyle.title,
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
Row(
|
// Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
// mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
children: [
|
// children: [
|
||||||
Column(
|
// Column(
|
||||||
children: [
|
// children: [
|
||||||
Text(
|
// Text(
|
||||||
'expiration date :${carRegistrationRecognizerController.extracted['expiration_date']}',
|
// 'expiration date :${carRegistrationRecognizerController.extracted['expiration_date']}',
|
||||||
style: AppStyle.title,
|
// style: AppStyle.title,
|
||||||
),
|
// ),
|
||||||
Text(
|
// Text(
|
||||||
'registration date :${carRegistrationRecognizerController.extracted['registration_date']}',
|
// 'registration date :${carRegistrationRecognizerController.extracted['registration_date']}',
|
||||||
style: AppStyle.title,
|
// style: AppStyle.title,
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
Text(
|
// Text(
|
||||||
'color :${carRegistrationRecognizerController.extracted['color']}',
|
// 'color :${carRegistrationRecognizerController.extracted['color']}',
|
||||||
style: AppStyle.title,
|
// style: AppStyle.title,
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
Row(
|
// Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
// mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
children: [
|
// children: [
|
||||||
Text(
|
// Text(
|
||||||
'owner :${carRegistrationRecognizerController.extracted['owner']}',
|
// 'owner :${carRegistrationRecognizerController.extracted['owner']}',
|
||||||
style: AppStyle.title,
|
// style: AppStyle.title,
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
)
|
// )
|
||||||
],
|
// ],
|
||||||
));
|
// ));
|
||||||
}
|
// }
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import 'package:sefer_driver/controller/functions/gemeni.dart';
|
|||||||
import 'package:sefer_driver/controller/functions/tts.dart';
|
import 'package:sefer_driver/controller/functions/tts.dart';
|
||||||
import 'package:sefer_driver/views/widgets/elevated_btn.dart';
|
import 'package:sefer_driver/views/widgets/elevated_btn.dart';
|
||||||
import 'package:sefer_driver/views/widgets/my_circular_indicator_timer.dart';
|
import 'package:sefer_driver/views/widgets/my_circular_indicator_timer.dart';
|
||||||
import 'package:sefer_driver/views/widgets/my_textField.dart';
|
|
||||||
import 'package:sefer_driver/views/widgets/mydialoug.dart';
|
import 'package:sefer_driver/views/widgets/mydialoug.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -52,41 +51,70 @@ class EgyptCardAI extends StatelessWidget {
|
|||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
(controller.responseIdCardDriverEgyptBack.isNotEmpty &&
|
Row(
|
||||||
controller.responseIdCardDriverEgyptFront
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
.isNotEmpty &&
|
children: [
|
||||||
controller.responseIdEgyptFront.isNotEmpty &&
|
(controller.responseIdCardDriverEgyptBack
|
||||||
controller.responseIdEgyptBack.isNotEmpty &&
|
.isNotEmpty &&
|
||||||
controller
|
controller.responseIdCardDriverEgyptFront
|
||||||
.responseIdEgyptDriverLicense.isNotEmpty
|
.isNotEmpty &&
|
||||||
// &&
|
(controller
|
||||||
// controller
|
.responseIdEgyptFront.isNotEmpty ||
|
||||||
// .responseCriminalRecordEgypt.isNotEmpty
|
controller.responseNonIdCardFront
|
||||||
|
.isNotEmpty) &&
|
||||||
|
(controller
|
||||||
|
.responseIdEgyptBack.isNotEmpty ||
|
||||||
|
controller.responseNonIdCardBack
|
||||||
|
.isNotEmpty) &&
|
||||||
|
controller
|
||||||
|
.responseIdEgyptDriverLicense.isNotEmpty
|
||||||
|
// &&
|
||||||
|
// controller
|
||||||
|
// .responseCriminalRecordEgypt.isNotEmpty
|
||||||
|
)
|
||||||
|
? MyElevatedButton(
|
||||||
|
title: 'Next'.tr,
|
||||||
|
kolor: AppColor.greenColor,
|
||||||
|
onPressed: () {
|
||||||
|
controller.addDriverAndCarEgypt();
|
||||||
|
})
|
||||||
|
: const SizedBox(),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
controller.isEgypt
|
||||||
|
? MyElevatedButton(
|
||||||
|
title: 'For Egypt'.tr,
|
||||||
|
onPressed: () {
|
||||||
|
controller.changeNationality();
|
||||||
|
})
|
||||||
|
: MyElevatedButton(
|
||||||
|
title: 'Non Egypt'.tr,
|
||||||
|
onPressed: () {
|
||||||
|
controller.changeNationality();
|
||||||
|
}),
|
||||||
|
],
|
||||||
)
|
)
|
||||||
? MyElevatedButton(
|
],
|
||||||
title: 'Next'.tr,
|
),
|
||||||
onPressed: () {
|
|
||||||
controller.addDriverAndCarEgypt();
|
|
||||||
})
|
|
||||||
: const SizedBox(),
|
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height:
|
height:
|
||||||
(controller.responseIdCardDriverEgyptBack
|
// (controller.responseIdCardDriverEgyptBack
|
||||||
.isNotEmpty &&
|
// .isNotEmpty &&
|
||||||
controller.responseIdCardDriverEgyptFront
|
// controller.responseIdCardDriverEgyptFront
|
||||||
.isNotEmpty &&
|
// .isNotEmpty &&
|
||||||
controller
|
// controller
|
||||||
.responseIdEgyptFront.isNotEmpty &&
|
// .responseIdEgyptFront.isNotEmpty &&
|
||||||
controller
|
// controller
|
||||||
.responseIdEgyptBack.isNotEmpty &&
|
// .responseIdEgyptBack.isNotEmpty &&
|
||||||
controller.responseIdEgyptDriverLicense
|
// controller.responseIdEgyptDriverLicense
|
||||||
.isNotEmpty
|
// .isNotEmpty
|
||||||
// &&
|
// &&
|
||||||
// controller.responseCriminalRecordEgypt
|
// controller.responseCriminalRecordEgypt
|
||||||
// .isNotEmpty
|
// .isNotEmpty
|
||||||
)
|
// )
|
||||||
? Get.height * .7
|
// ?
|
||||||
: Get.height * .85,
|
Get.height * .7,
|
||||||
|
// : Get.height * .85,
|
||||||
child: ListView(
|
child: ListView(
|
||||||
children: [
|
children: [
|
||||||
Padding(
|
Padding(
|
||||||
@@ -109,8 +137,12 @@ class EgyptCardAI extends StatelessWidget {
|
|||||||
egyptDriverLicense(),
|
egyptDriverLicense(),
|
||||||
egyptCarLicenceFront(),
|
egyptCarLicenceFront(),
|
||||||
egyptCarLicenceBack(),
|
egyptCarLicenceBack(),
|
||||||
egyptDriverIDFront(),
|
controller.isEgypt
|
||||||
egyptDriverIDBack(),
|
? egyptDriverIDFront()
|
||||||
|
: nonEgyptDriverIDFront(),
|
||||||
|
controller.isEgypt
|
||||||
|
? egyptDriverIDBack()
|
||||||
|
: nonEgyptDriverIDBack(),
|
||||||
// egyptCriminalRecord(),
|
// egyptCriminalRecord(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -498,6 +530,109 @@ class EgyptCardAI extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GetBuilder<AI> nonEgyptDriverIDBack() {
|
||||||
|
return GetBuilder<AI>(
|
||||||
|
builder: (ai) {
|
||||||
|
if (ai.responseNonIdCardBack.isNotEmpty) {
|
||||||
|
final residencyExpiryDate =
|
||||||
|
ai.responseNonIdCardBack['residencyExpirationDate'];
|
||||||
|
final today = DateTime.now();
|
||||||
|
final residencyExpiryDateTime =
|
||||||
|
DateTime.tryParse(residencyExpiryDate);
|
||||||
|
final isExpired = residencyExpiryDateTime != null &&
|
||||||
|
residencyExpiryDateTime.isBefore(today);
|
||||||
|
|
||||||
|
return Card(
|
||||||
|
elevation: 4.0,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(16.0),
|
||||||
|
),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(16.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text('Non-Egyptian ID Back'.tr, style: AppStyle.title),
|
||||||
|
IconButton(
|
||||||
|
onPressed: () async {
|
||||||
|
await ai.allMethodForAI(
|
||||||
|
ai.prompts[7]['prompt'].toString(),
|
||||||
|
AppLink.uploadEgypt,
|
||||||
|
'non_id_back');
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.refresh),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
const Divider(color: AppColor.accentColor),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
Text(
|
||||||
|
'${'Country'.tr}: ${ai.responseNonIdCardBack['country']}',
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
Text(
|
||||||
|
'${'Residency Type'.tr}: ${ai.responseNonIdCardBack['residencyType']}',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
Text(
|
||||||
|
'${'Work Status'.tr}: ${ai.responseNonIdCardBack['workStatus']}',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'${'Issue Date'.tr}: ${ai.responseNonIdCardBack['issueDate']}',
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'${'Birth Date'.tr}: ${ai.responseNonIdCardBack['birthDate']}',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
Text(
|
||||||
|
'${'Residency Expiration Date'.tr}: ${ai.responseNonIdCardBack['residencyExpirationDate']}',
|
||||||
|
style: AppStyle.title.copyWith(
|
||||||
|
color: !isExpired
|
||||||
|
? AppColor.greenColor
|
||||||
|
: AppColor.redColor),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return Card(
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () async {
|
||||||
|
await ai.allMethodForAI(ai.prompts[7]['prompt'].toString(),
|
||||||
|
AppLink.uploadEgypt, 'non_id_back');
|
||||||
|
},
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Image.asset(
|
||||||
|
'assets/images/7.png',
|
||||||
|
height: Get.height * .25,
|
||||||
|
width: double.maxFinite,
|
||||||
|
fit: BoxFit.fitHeight,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Capture Image of Non-Egyptian ID Back'.tr,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
GetBuilder<AI> egyptDriverIDFront() {
|
GetBuilder<AI> egyptDriverIDFront() {
|
||||||
return GetBuilder<AI>(
|
return GetBuilder<AI>(
|
||||||
builder: (ai) {
|
builder: (ai) {
|
||||||
@@ -597,6 +732,105 @@ class EgyptCardAI extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GetBuilder<AI> nonEgyptDriverIDFront() {
|
||||||
|
return GetBuilder<AI>(
|
||||||
|
builder: (ai) {
|
||||||
|
if (ai.responseNonIdCardFront.isNotEmpty) {
|
||||||
|
return Card(
|
||||||
|
elevation: 4.0,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(16.0),
|
||||||
|
),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(16.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text('Non-Egyptian ID Front'.tr, style: AppStyle.title),
|
||||||
|
IconButton(
|
||||||
|
onPressed: () async {
|
||||||
|
await ai.allMethodForAI(
|
||||||
|
ai.prompts[6]['prompt'].toString(),
|
||||||
|
AppLink.uploadEgypt,
|
||||||
|
'non_id_front');
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.refresh),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
const Divider(color: AppColor.accentColor),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
Text(
|
||||||
|
'${'Full Name'.tr}: ${ai.responseNonIdCardFront['full_name']}',
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'${'Passport No'.tr}: ${ai.responseNonIdCardFront['passport_no']}',
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'${'Card ID'.tr}: ${ai.responseNonIdCardFront['card_id']}',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'${'Country'.tr}: ${ai.responseNonIdCardFront['country']}',
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'${'Gender'.tr}: ${ai.responseNonIdCardFront['gender']}',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
Text(
|
||||||
|
'${'Birth Date'.tr}: ${ai.responseNonIdCardFront['birthdate']}',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8.0),
|
||||||
|
Text(
|
||||||
|
'${'Address'.tr}: ${ai.responseNonIdCardFront['address']}',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return Card(
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () async {
|
||||||
|
await ai.allMethodForAI(ai.prompts[6]['prompt'].toString(),
|
||||||
|
AppLink.uploadEgypt, 'non_id_front');
|
||||||
|
},
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Image.asset(
|
||||||
|
'assets/images/7.jpeg',
|
||||||
|
height: Get.height * .25,
|
||||||
|
width: double.maxFinite,
|
||||||
|
fit: BoxFit.fitHeight,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Capture Image of Non-Egyptian ID Front'.tr,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
GetBuilder<AI> egyptCarLicenceFront() {
|
GetBuilder<AI> egyptCarLicenceFront() {
|
||||||
return GetBuilder<AI>(
|
return GetBuilder<AI>(
|
||||||
builder: (ai) {
|
builder: (ai) {
|
||||||
|
|||||||
@@ -165,9 +165,8 @@ class CameraWidgetCardId extends StatelessWidget {
|
|||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
children: [
|
children: [
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
title: 'Scan ID MklGoogle'.tr,
|
title: 'Scan ID MklGoogle'.tr, onPressed: () {}),
|
||||||
onPressed: () =>
|
// cameraClassController.takePictureAndMLGoogleScan()),
|
||||||
cameraClassController.takePictureAndMLGoogleScan()),
|
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
title: 'Scan ID Tesseract'.tr, onPressed: () {}),
|
title: 'Scan ID Tesseract'.tr, onPressed: () {}),
|
||||||
],
|
],
|
||||||
@@ -283,9 +282,8 @@ class CameraWidgetPassPort extends StatelessWidget {
|
|||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
children: [
|
children: [
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
title: 'Scan ID MklGoogle'.tr,
|
title: 'Scan ID MklGoogle'.tr, onPressed: () => {}),
|
||||||
onPressed: () =>
|
// cameraClassController.takePictureAndMLGoogleScan()),
|
||||||
cameraClassController.takePictureAndMLGoogleScan()),
|
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
title: 'Scan ID Tesseract'.tr, onPressed: () {}),
|
title: 'Scan ID Tesseract'.tr, onPressed: () {}),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -107,114 +107,210 @@ class HomeCaptain extends StatelessWidget {
|
|||||||
left: Get.width * .1,
|
left: Get.width * .1,
|
||||||
child: const ConnectWidget()),
|
child: const ConnectWidget()),
|
||||||
Positioned(
|
Positioned(
|
||||||
top: 5,
|
top: 5,
|
||||||
right: Get.width * .05,
|
right: Get.width * .05,
|
||||||
left: Get.width * .05,
|
left: Get.width * .05,
|
||||||
child: GetBuilder<HomeCaptainController>(
|
child: GetBuilder<HomeCaptainController>(
|
||||||
builder: (homeCaptainController) {
|
builder: (homeCaptainController) {
|
||||||
return Container(
|
return Container(
|
||||||
decoration: AppStyle.boxDecoration,
|
decoration: BoxDecoration(
|
||||||
width: Get.width * .8,
|
gradient: const LinearGradient(
|
||||||
height: 104,
|
begin: Alignment.topLeft,
|
||||||
child: Center(
|
end: Alignment.bottomRight,
|
||||||
child: Column(
|
colors: [Colors.white, Colors.white70],
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
),
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
borderRadius: BorderRadius.circular(15),
|
||||||
children: [
|
boxShadow: [
|
||||||
Row(
|
BoxShadow(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
color: Colors.grey.withOpacity(0.2),
|
||||||
children: [
|
spreadRadius: 2,
|
||||||
const Icon(
|
blurRadius: 8,
|
||||||
Entypo.wallet,
|
offset: const Offset(0, 2),
|
||||||
color: AppColor.greenColor,
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
padding:
|
||||||
|
const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
||||||
|
width: Get.width * .8,
|
||||||
|
height: 120,
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.all(8),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.greenColor.withOpacity(0.1),
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
),
|
),
|
||||||
Text(
|
child: Row(
|
||||||
' You Earn today is '.tr +
|
children: [
|
||||||
homeCaptainController.totalMoneyToday,
|
const Icon(
|
||||||
style: AppStyle.title,
|
Entypo.wallet,
|
||||||
),
|
color: AppColor.greenColor,
|
||||||
],
|
size: 20,
|
||||||
),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
const Icon(
|
|
||||||
Entypo.wallet,
|
|
||||||
color: AppColor.yellowColor,
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'${' You Have in'.tr} ${AppInformation.appName} ${homeCaptainController.totalMoneyInSEFER} ',
|
|
||||||
style: AppStyle.title,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Total Budget is '.tr +
|
|
||||||
homeCaptainController.totalPoints,
|
|
||||||
style: AppStyle.title,
|
|
||||||
),
|
|
||||||
Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
borderRadius: BorderRadius.circular(6),
|
|
||||||
color: int.parse(
|
|
||||||
Get.find<HomeCaptainController>()
|
|
||||||
.countRideToday) <
|
|
||||||
5
|
|
||||||
? AppColor.accentColor
|
|
||||||
: int.parse(Get.find<
|
|
||||||
HomeCaptainController>()
|
|
||||||
.countRideToday) >
|
|
||||||
5 &&
|
|
||||||
int.parse(Get.find<
|
|
||||||
HomeCaptainController>()
|
|
||||||
.countRideToday) <
|
|
||||||
10
|
|
||||||
? AppColor.yellowColor
|
|
||||||
: AppColor.greenColor,
|
|
||||||
),
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(
|
|
||||||
horizontal: 8, vertical: 2),
|
|
||||||
child: Text(
|
|
||||||
'Ride Today : '.tr +
|
|
||||||
Get.find<HomeCaptainController>()
|
|
||||||
.countRideToday,
|
|
||||||
style: AppStyle.title
|
|
||||||
.copyWith(color: AppColor.secondaryColor),
|
|
||||||
),
|
),
|
||||||
),
|
const SizedBox(width: 8),
|
||||||
|
Text(
|
||||||
|
'${"Today".tr}: ${homeCaptainController.totalMoneyToday}',
|
||||||
|
style: AppStyle.title.copyWith(
|
||||||
|
color: AppColor.greenColor,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
),
|
Container(
|
||||||
],
|
padding: const EdgeInsets.all(8),
|
||||||
)));
|
decoration: BoxDecoration(
|
||||||
})),
|
color: AppColor.yellowColor.withOpacity(0.1),
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
const Icon(
|
||||||
|
Entypo.wallet,
|
||||||
|
color: AppColor.yellowColor,
|
||||||
|
size: 20,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
Text(
|
||||||
|
'${AppInformation.appName}: ${homeCaptainController.totalMoneyInSEFER}',
|
||||||
|
style: AppStyle.title.copyWith(
|
||||||
|
color: AppColor.yellowColor,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'${'Total Points is'.tr}: ${homeCaptainController.totalPoints}',
|
||||||
|
style: AppStyle.title.copyWith(
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 12, vertical: 6),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(20),
|
||||||
|
color: int.parse(homeCaptainController
|
||||||
|
.countRideToday) <
|
||||||
|
5
|
||||||
|
? AppColor.accentColor
|
||||||
|
: int.parse(homeCaptainController
|
||||||
|
.countRideToday) >
|
||||||
|
5 &&
|
||||||
|
int.parse(homeCaptainController
|
||||||
|
.countRideToday) <
|
||||||
|
10
|
||||||
|
? AppColor.yellowColor
|
||||||
|
: AppColor.greenColor,
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
const Icon(
|
||||||
|
Icons.directions_car_rounded,
|
||||||
|
color: Colors.white,
|
||||||
|
size: 18,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 4),
|
||||||
|
Text(
|
||||||
|
'${"Ride Today : ".tr}: ${homeCaptainController.countRideToday}',
|
||||||
|
style: AppStyle.title.copyWith(
|
||||||
|
color: Colors.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
bottom: 65,
|
bottom: 65,
|
||||||
right: Get.width * .1,
|
right: Get.width * .1,
|
||||||
left: Get.width * .1,
|
left: Get.width * .1,
|
||||||
child: GetBuilder<HomeCaptainController>(
|
child: GetBuilder<HomeCaptainController>(
|
||||||
builder: (homeCaptainController) => Container(
|
builder: (homeCaptainController) => Container(
|
||||||
decoration: AppStyle.boxDecoration,
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color: Colors.grey.withOpacity(0.2),
|
||||||
|
spreadRadius: 2,
|
||||||
|
blurRadius: 8,
|
||||||
|
offset: const Offset(0, 2),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
padding:
|
||||||
|
const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Row(
|
||||||
'${'Active Duration:'.tr} ${homeCaptainController.stringActiveDuration} ',
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
style: AppStyle.title,
|
children: [
|
||||||
|
const Icon(Icons.timer_outlined,
|
||||||
|
color: AppColor.greenColor),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
Text(
|
||||||
|
'Active Duration:'.tr,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 4),
|
||||||
|
Text(
|
||||||
|
homeCaptainController.stringActiveDuration,
|
||||||
|
style: AppStyle.title.copyWith(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: AppColor.greenColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
Text(
|
const SizedBox(height: 8),
|
||||||
'${'Total Connection Duration:'.tr} ${homeCaptainController.totalDurationToday} ',
|
Row(
|
||||||
style: AppStyle.title,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
const Icon(Icons.access_time,
|
||||||
|
color: AppColor.accentColor),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
Text(
|
||||||
|
'Total Connection Duration:'.tr,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 4),
|
||||||
|
Text(
|
||||||
|
homeCaptainController.totalDurationToday,
|
||||||
|
style: AppStyle.title.copyWith(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: AppColor.accentColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
), // Positioned(
|
||||||
// Positioned(
|
|
||||||
// bottom: Get.height * .17,
|
// bottom: Get.height * .17,
|
||||||
// right: Get.width * .01,
|
// right: Get.width * .01,
|
||||||
// child: AnimatedContainer(
|
// child: AnimatedContainer(
|
||||||
|
|||||||
@@ -23,80 +23,119 @@ class ConnectWidget extends StatelessWidget {
|
|||||||
captainWalletController.getCaptainWalletFromBuyPoints();
|
captainWalletController.getCaptainWalletFromBuyPoints();
|
||||||
return Center(
|
return Center(
|
||||||
child: GetBuilder<HomeCaptainController>(
|
child: GetBuilder<HomeCaptainController>(
|
||||||
builder: (homeCaptainController) => int.parse(
|
builder: (homeCaptainController) => double.parse(
|
||||||
homeCaptainController.countRefuse) >
|
captainWalletController.totalPoints) <
|
||||||
3 ||
|
-300
|
||||||
double.parse(captainWalletController.totalPoints) < -300
|
? CupertinoButton(
|
||||||
? CupertinoButton(
|
onPressed: () {
|
||||||
onPressed: () {
|
Get.defaultDialog(
|
||||||
Get.defaultDialog(
|
// backgroundColor: CupertinoColors.destructiveRed,
|
||||||
// backgroundColor: CupertinoColors.destructiveRed,
|
barrierDismissible: false,
|
||||||
barrierDismissible: false,
|
title:
|
||||||
title: double.parse(captainWalletController.totalPoints) <
|
double.parse(captainWalletController.totalPoints) <
|
||||||
-300
|
-300
|
||||||
? 'You dont have Points'.tr
|
? 'You dont have Points'.tr
|
||||||
: 'You Are Stopped For this Day !'.tr,
|
: 'You Are Stopped For this Day !'.tr,
|
||||||
titleStyle: AppStyle.title,
|
titleStyle: AppStyle.title,
|
||||||
content: Column(
|
content: Column(
|
||||||
children: [
|
children: [
|
||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
|
double.parse(captainWalletController
|
||||||
|
.totalPoints) <
|
||||||
|
-300
|
||||||
|
? await Get.find<TextToSpeechController>()
|
||||||
|
.speakText(
|
||||||
|
'You must be recharge your Account'
|
||||||
|
.tr)
|
||||||
|
: await Get.find<TextToSpeechController>()
|
||||||
|
.speakText(
|
||||||
|
'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!'
|
||||||
|
.tr);
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.headphones),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
double.parse(
|
double.parse(
|
||||||
captainWalletController.totalPoints) <
|
captainWalletController.totalPoints) <
|
||||||
-300
|
-300
|
||||||
? await Get.find<TextToSpeechController>()
|
? 'You must be recharge your Account'.tr
|
||||||
.speakText(
|
: 'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!'
|
||||||
'You must be recharge your Account'
|
.tr,
|
||||||
.tr)
|
style: AppStyle.title,
|
||||||
: await Get.find<TextToSpeechController>()
|
),
|
||||||
.speakText(
|
],
|
||||||
'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!'
|
),
|
||||||
.tr);
|
confirm:
|
||||||
},
|
|
||||||
icon: const Icon(Icons.headphones),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
double.parse(captainWalletController.totalPoints) <
|
double.parse(captainWalletController.totalPoints) <
|
||||||
-300
|
-300
|
||||||
? 'You must be recharge your Account'.tr
|
? MyElevatedButton(
|
||||||
: 'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!'
|
title: 'Recharge my Account'.tr,
|
||||||
.tr,
|
onPressed: () {
|
||||||
style: AppStyle.title,
|
homeCaptainController
|
||||||
),
|
.goToWalletFromConnect();
|
||||||
],
|
})
|
||||||
|
: MyElevatedButton(
|
||||||
|
title: 'Ok , See you Tomorrow'.tr,
|
||||||
|
onPressed: () {
|
||||||
|
Get.back();
|
||||||
|
Get.back();
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
color: CupertinoColors.destructiveRed,
|
||||||
|
child: Text(
|
||||||
|
'You are Stopped'.tr,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
gradient: LinearGradient(
|
||||||
|
colors: homeCaptainController.isActive
|
||||||
|
? [Colors.green.shade400, Colors.green.shade700]
|
||||||
|
: [Colors.grey.shade400, Colors.grey.shade700],
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color: homeCaptainController.isActive
|
||||||
|
? Colors.green.withOpacity(0.3)
|
||||||
|
: Colors.grey.withOpacity(0.3),
|
||||||
|
spreadRadius: 1,
|
||||||
|
blurRadius: 8,
|
||||||
|
offset: const Offset(0, 2),
|
||||||
),
|
),
|
||||||
confirm:
|
],
|
||||||
double.parse(captainWalletController.totalPoints) <
|
),
|
||||||
-300
|
child: CupertinoButton(
|
||||||
? MyElevatedButton(
|
onPressed: homeCaptainController.onButtonSelected,
|
||||||
title: 'Recharge my Account'.tr,
|
padding: const EdgeInsets.symmetric(
|
||||||
onPressed: () {
|
horizontal: 24, vertical: 12),
|
||||||
homeCaptainController
|
child: Row(
|
||||||
.goToWalletFromConnect();
|
mainAxisSize: MainAxisSize.min,
|
||||||
})
|
children: [
|
||||||
: MyElevatedButton(
|
Icon(
|
||||||
title: 'Ok , See you Tomorrow'.tr,
|
homeCaptainController.isActive
|
||||||
onPressed: () {
|
? CupertinoIcons.check_mark_circled_solid
|
||||||
Get.back();
|
: CupertinoIcons.circle,
|
||||||
Get.back();
|
color: Colors.white,
|
||||||
}));
|
size: 24,
|
||||||
},
|
),
|
||||||
color: CupertinoColors.destructiveRed,
|
const SizedBox(width: 8),
|
||||||
child: Text(
|
Text(
|
||||||
'You are Stopped'.tr,
|
homeCaptainController.isActive
|
||||||
style: AppStyle.title,
|
? 'Connected'.tr
|
||||||
),
|
: 'Not Connected'.tr,
|
||||||
)
|
style: const TextStyle(
|
||||||
: CupertinoButton(
|
color: Colors.white,
|
||||||
onPressed: homeCaptainController.onButtonSelected,
|
fontSize: 16,
|
||||||
color: homeCaptainController.isActive
|
fontWeight: FontWeight.w600,
|
||||||
? CupertinoColors.activeGreen
|
),
|
||||||
: CupertinoColors.inactiveGray,
|
),
|
||||||
child: Text(homeCaptainController.isActive
|
],
|
||||||
? 'Connected'.tr
|
),
|
||||||
: 'Not Connected'.tr),
|
),
|
||||||
),
|
)),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'dart:io';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:slide_to_act/slide_to_act.dart';
|
||||||
import 'package:vibration/vibration.dart';
|
import 'package:vibration/vibration.dart';
|
||||||
|
|
||||||
import '../../../../constant/colors.dart';
|
import '../../../../constant/colors.dart';
|
||||||
@@ -150,13 +151,30 @@ GetBuilder<MapDriverController> driverEndRideBar() {
|
|||||||
// mapDriverController.remainingTimeTimerRideBegin <
|
// mapDriverController.remainingTimeTimerRideBegin <
|
||||||
// 60
|
// 60
|
||||||
// ?
|
// ?
|
||||||
MyElevatedButton(
|
SlideAction(
|
||||||
title: 'End Ride'.tr,
|
text: 'End Ride'.tr,
|
||||||
onPressed: () {
|
textStyle: const TextStyle(
|
||||||
|
fontSize: 18,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
outerColor: AppColor.redColor,
|
||||||
|
innerColor: Colors.white,
|
||||||
|
sliderButtonIcon: const Icon(
|
||||||
|
Icons.arrow_forward,
|
||||||
|
color: AppColor.redColor,
|
||||||
|
),
|
||||||
|
onSubmit: () {
|
||||||
mapDriverController.finishRideFromDriver();
|
mapDriverController.finishRideFromDriver();
|
||||||
},
|
},
|
||||||
kolor: AppColor.redColor,
|
|
||||||
),
|
),
|
||||||
|
// MyElevatedButton(
|
||||||
|
// title: 'End Ride'.tr,
|
||||||
|
// onPressed: () {
|
||||||
|
// mapDriverController.finishRideFromDriver();
|
||||||
|
// },
|
||||||
|
// kolor: AppColor.redColor,
|
||||||
|
// ),
|
||||||
// : const SizedBox(),
|
// : const SizedBox(),
|
||||||
Container(
|
Container(
|
||||||
decoration: AppStyle.boxDecoration1,
|
decoration: AppStyle.boxDecoration1,
|
||||||
|
|||||||
@@ -19,12 +19,13 @@ import flutter_tts
|
|||||||
import geolocator_apple
|
import geolocator_apple
|
||||||
import google_sign_in_ios
|
import google_sign_in_ios
|
||||||
import just_audio
|
import just_audio
|
||||||
|
import local_auth_darwin
|
||||||
import location
|
import location
|
||||||
import package_info_plus
|
import package_info_plus
|
||||||
import path_provider_foundation
|
import path_provider_foundation
|
||||||
import record_darwin
|
import record_darwin
|
||||||
import sign_in_with_apple
|
import sign_in_with_apple
|
||||||
import sqflite
|
import sqflite_darwin
|
||||||
import url_launcher_macos
|
import url_launcher_macos
|
||||||
import video_player_avfoundation
|
import video_player_avfoundation
|
||||||
import wakelock_plus
|
import wakelock_plus
|
||||||
@@ -45,6 +46,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
|||||||
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
|
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
|
||||||
FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin"))
|
FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin"))
|
||||||
JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
|
JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
|
||||||
|
FLALocalAuthPlugin.register(with: registry.registrar(forPlugin: "FLALocalAuthPlugin"))
|
||||||
LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin"))
|
LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin"))
|
||||||
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
||||||
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||||
|
|||||||
799
pubspec.lock
799
pubspec.lock
File diff suppressed because it is too large
Load Diff
23
pubspec.yaml
23
pubspec.yaml
@@ -20,7 +20,7 @@ dependencies:
|
|||||||
cupertino_icons: ^1.0.2
|
cupertino_icons: ^1.0.2
|
||||||
firebase_messaging: ^15.0.3
|
firebase_messaging: ^15.0.3
|
||||||
firebase_core: ^3.2.0
|
firebase_core: ^3.2.0
|
||||||
flutter_local_notifications: ^17.2.1+2
|
flutter_local_notifications: ^18.0.1
|
||||||
google_maps_flutter: ^2.5.0
|
google_maps_flutter: ^2.5.0
|
||||||
sqflite: ^2.3.0
|
sqflite: ^2.3.0
|
||||||
path: ^1.8.3
|
path: ^1.8.3
|
||||||
@@ -36,30 +36,30 @@ dependencies:
|
|||||||
# custom_searchable_dropdown: ^2.1.1
|
# custom_searchable_dropdown: ^2.1.1
|
||||||
animated_text_kit: ^4.2.2
|
animated_text_kit: ^4.2.2
|
||||||
flutter_secure_storage: ^9.0.0
|
flutter_secure_storage: ^9.0.0
|
||||||
geolocator: ^12.0.0
|
geolocator: ^13.0.2
|
||||||
flutter_paypal: ^0.2.0
|
flutter_paypal: ^0.2.0
|
||||||
flutter_launcher_icons: ^0.13.1 #to be remove
|
flutter_launcher_icons: ^0.14.2 #to be remove
|
||||||
# crypto: ^3.0.3
|
# crypto: ^3.0.3
|
||||||
encrypt: ^5.0.3
|
encrypt: ^5.0.3
|
||||||
flutter_rating_bar: ^4.0.1
|
flutter_rating_bar: ^4.0.1
|
||||||
flutter_font_icons: ^2.2.5
|
flutter_font_icons: ^2.2.5
|
||||||
# device_info_plus: ^9.1.0
|
# device_info_plus: ^9.1.0
|
||||||
image_picker: ^1.0.4
|
image_picker: ^1.0.4
|
||||||
flutter_stripe: ^10.2.0
|
flutter_stripe: ^11.3.0
|
||||||
camera: ^0.11.0+1 #to be remove
|
camera: ^0.11.0+1 #to be remove
|
||||||
flutter_widget_from_html: ^0.15.1
|
flutter_widget_from_html: ^0.15.1
|
||||||
local_auth: ^2.1.7
|
local_auth: ^2.1.7
|
||||||
image: ^4.1.3 #to be remove
|
image: ^4.1.3 #to be remove
|
||||||
image_cropper: ^7.1.0
|
image_cropper: ^8.1.0
|
||||||
envied: ^0.5.2
|
envied: ^1.0.0
|
||||||
# cached_network_image: ^3.3.0 #to be remove
|
# cached_network_image: ^3.3.0 #to be remove
|
||||||
calendar_builder: ^0.0.6
|
calendar_builder: ^0.0.6
|
||||||
fl_chart: ^0.68.0
|
fl_chart: ^0.70.0
|
||||||
# agora_rtc_engine: ^6.2.6
|
# agora_rtc_engine: ^6.2.6
|
||||||
flutter_tts: ^4.0.2
|
flutter_tts: ^4.0.2
|
||||||
permission_handler: ^11.3.0
|
permission_handler: ^11.3.0
|
||||||
# google_generative_ai: ^0.0.1-dev
|
# google_generative_ai: ^0.0.1-dev
|
||||||
vibration: ^1.8.4
|
vibration: ^2.0.1
|
||||||
wakelock_plus:
|
wakelock_plus:
|
||||||
# background_location: ^0.13.0
|
# background_location: ^0.13.0
|
||||||
background_location:
|
background_location:
|
||||||
@@ -77,7 +77,7 @@ dependencies:
|
|||||||
just_audio: ^0.9.37
|
just_audio: ^0.9.37
|
||||||
share: ^2.0.4
|
share: ^2.0.4
|
||||||
google_sign_in: ^6.2.1
|
google_sign_in: ^6.2.1
|
||||||
google_mlkit_text_recognition: ^0.13.0
|
# google_mlkit_text_recognition: ^0.14.0
|
||||||
sign_in_with_apple: ^6.1.0
|
sign_in_with_apple: ^6.1.0
|
||||||
firebase_auth: ^5.1.2
|
firebase_auth: ^5.1.2
|
||||||
package_info_plus: ^8.0.0
|
package_info_plus: ^8.0.0
|
||||||
@@ -88,13 +88,14 @@ dependencies:
|
|||||||
video_player: ^2.9.2
|
video_player: ^2.9.2
|
||||||
youtube_player_flutter: ^9.0.4
|
youtube_player_flutter: ^9.0.4
|
||||||
flutter_confetti: ^0.3.0
|
flutter_confetti: ^0.3.0
|
||||||
|
slide_to_act: ^2.0.2
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|
||||||
flutter_lints: ^4.0.0
|
flutter_lints: ^5.0.0
|
||||||
envied_generator: ^0.5.2
|
envied_generator: ^1.0.0
|
||||||
build_runner: ^2.4.6
|
build_runner: ^2.4.6
|
||||||
|
|
||||||
flutter_launcher_icons:
|
flutter_launcher_icons:
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#include <file_selector_windows/file_selector_windows.h>
|
#include <file_selector_windows/file_selector_windows.h>
|
||||||
#include <firebase_auth/firebase_auth_plugin_c_api.h>
|
#include <firebase_auth/firebase_auth_plugin_c_api.h>
|
||||||
#include <firebase_core/firebase_core_plugin_c_api.h>
|
#include <firebase_core/firebase_core_plugin_c_api.h>
|
||||||
|
#include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h>
|
||||||
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
|
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
|
||||||
#include <flutter_tts/flutter_tts_plugin.h>
|
#include <flutter_tts/flutter_tts_plugin.h>
|
||||||
#include <geolocator_windows/geolocator_windows.h>
|
#include <geolocator_windows/geolocator_windows.h>
|
||||||
@@ -24,6 +25,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
|||||||
registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi"));
|
registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi"));
|
||||||
FirebaseCorePluginCApiRegisterWithRegistrar(
|
FirebaseCorePluginCApiRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
|
registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
|
||||||
|
FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar(
|
||||||
|
registry->GetRegistrarForPlugin("FlutterInappwebviewWindowsPluginCApi"));
|
||||||
FlutterSecureStorageWindowsPluginRegisterWithRegistrar(
|
FlutterSecureStorageWindowsPluginRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin"));
|
registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin"));
|
||||||
FlutterTtsPluginRegisterWithRegistrar(
|
FlutterTtsPluginRegisterWithRegistrar(
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
|||||||
file_selector_windows
|
file_selector_windows
|
||||||
firebase_auth
|
firebase_auth
|
||||||
firebase_core
|
firebase_core
|
||||||
|
flutter_inappwebview_windows
|
||||||
flutter_secure_storage_windows
|
flutter_secure_storage_windows
|
||||||
flutter_tts
|
flutter_tts
|
||||||
geolocator_windows
|
geolocator_windows
|
||||||
|
|||||||
Reference in New Issue
Block a user