This commit is contained in:
Hamza-Ayed
2024-09-14 23:19:25 +03:00
parent ba3a9850c2
commit 02bb9fc7f7
23 changed files with 2407 additions and 1020 deletions

6
.env
View File

@@ -2,13 +2,17 @@ basicAuthCredentials=wqnmqqsjyvwv:nqrYJP@1737XrXlBl
accountSIDTwillo=QFx0qy456juj3839xuy2194q629q1fj0y7XrXlBl accountSIDTwillo=QFx0qy456juj3839xuy2194q629q1fj0y7XrXlBl
visionApi=3pALsqSSYTvzp69Q5FMIgbzjG6Z1zktJXrXlBl visionApi=3pALsqSSYTvzp69Q5FMIgbzjG6Z1zktJXrXlBl
serverPHP=https://api.sefer.live/sefer serverPHP=https://api.sefer.live/sefer
seferAlexandriaServer=https://seferalexandria.site/sefer
seferPaymentServer=https://seferpw.shop/sefer/ride
seferCairoServer=https://sefer.click/sefer
seferGizaServer=https://gizasefer.online/sefer
serverPHPContabo=https://globalsefer.online/sefer serverPHPContabo=https://globalsefer.online/sefer
ocpApimSubscriptionKey=0f5dacccdbce4131b1a5f952996302e3 ocpApimSubscriptionKey=0f5dacccdbce4131b1a5f952996302e3
smsPasswordEgypt="J)Vh=qb/@MXrXlBl" smsPasswordEgypt="J)Vh=qb/@MXrXlBl"
keyOfApp=nqryjp@1737wqnmqqsjyzjujljksvceiXrXlBl keyOfApp=nqryjp@1737wqnmqqsjyzjujljksvceiXrXlBl
emailService=seferservice@sefer.live emailService=seferservice@sefer.live
anthropicAIkeySeferNew=zg-qbc-qvo39-n4VdMQ5nuJeIYhMN4PDYr7qox3-t2i1Lh7aNTDfYF-Gf8whUJZCs47EeelKn8_UcmUMmiSLaf0UJg0DvUlQrDt-76CRrkQQXrXlBl anthropicAIkeySeferNew=zg-qbc-qvo39-n4VdMQ5nuJeIYhMN4PDYr7qox3-t2i1Lh7aNTDfYF-Gf8whUJZCs47EeelKn8_UcmUMmiSLaf0UJg0DvUlQrDt-76CRrkQQXrXlBl
anthropicAIkeySeferNewHamzaayedpython=zg-qbc-qvo39-vCB-WnzEwFNArO0YlTapvfhtmguKWsXJSKqg_NZSjHBYVXMZK1yUK88SobdckV0KuPaBh0c_WHtGsRO_439PBk-e2QqgkQQXrXlBl
a=q a=q
b=x b=x

View File

@@ -18,21 +18,6 @@ migration:
- platform: android - platform: android
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: ios
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: linux
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: macos
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: web
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: windows
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
# User provided section # User provided section

View File

@@ -43,8 +43,8 @@ android {
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdk = 23 minSdk = 23
targetSdk = flutter.targetSdkVersion targetSdk = flutter.targetSdkVersion
versionCode = 7 versionCode = 12
versionName = '1.07' versionName = '1.12'
} }
buildTypes { buildTypes {

View File

@@ -7,54 +7,64 @@ PODS:
- AppAuth/Core - AppAuth/Core
- device_info_plus (0.0.1): - device_info_plus (0.0.1):
- Flutter - Flutter
- Firebase/Auth (10.27.0): - Firebase/Auth (11.0.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseAuth (~> 10.27.0) - FirebaseAuth (~> 11.0.0)
- Firebase/CoreOnly (10.27.0): - Firebase/CoreOnly (11.0.0):
- FirebaseCore (= 10.27.0) - FirebaseCore (= 11.0.0)
- Firebase/Messaging (10.27.0): - Firebase/Messaging (11.0.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseMessaging (~> 10.27.0) - FirebaseMessaging (~> 11.0.0)
- firebase_auth (5.1.1): - firebase_auth (5.2.0):
- Firebase/Auth (= 10.27.0) - Firebase/Auth (= 11.0.0)
- firebase_core - firebase_core
- Flutter - Flutter
- firebase_core (3.1.1): - firebase_core (3.4.0):
- Firebase/CoreOnly (= 10.27.0) - Firebase/CoreOnly (= 11.0.0)
- Flutter - Flutter
- firebase_messaging (15.0.2): - firebase_messaging (15.1.0):
- Firebase/Messaging (= 10.27.0) - Firebase/Messaging (= 11.0.0)
- firebase_core - firebase_core
- Flutter - Flutter
- FirebaseAppCheckInterop (10.27.0) - FirebaseAppCheckInterop (11.2.0)
- FirebaseAuth (10.27.0): - FirebaseAuth (11.0.0):
- FirebaseAppCheckInterop (~> 10.17) - FirebaseAppCheckInterop (~> 11.0)
- FirebaseCore (~> 10.0) - FirebaseAuthInterop (~> 11.0)
- GoogleUtilities/AppDelegateSwizzler (~> 7.8) - FirebaseCore (~> 11.0)
- GoogleUtilities/Environment (~> 7.8) - FirebaseCoreExtension (~> 11.0)
- GTMSessionFetcher/Core (< 4.0, >= 2.1) - GoogleUtilities/AppDelegateSwizzler (~> 8.0)
- GoogleUtilities/Environment (~> 8.0)
- GTMSessionFetcher/Core (~> 3.4)
- RecaptchaInterop (~> 100.0) - RecaptchaInterop (~> 100.0)
- FirebaseCore (10.27.0): - FirebaseAuthInterop (11.2.0)
- FirebaseCoreInternal (~> 10.0) - FirebaseCore (11.0.0):
- GoogleUtilities/Environment (~> 7.12) - FirebaseCoreInternal (~> 11.0)
- GoogleUtilities/Logger (~> 7.12) - GoogleUtilities/Environment (~> 8.0)
- FirebaseCoreInternal (10.27.0): - GoogleUtilities/Logger (~> 8.0)
- "GoogleUtilities/NSData+zlib (~> 7.8)" - FirebaseCoreExtension (11.2.0):
- FirebaseInstallations (10.27.0): - FirebaseCore (~> 11.0)
- FirebaseCore (~> 10.0) - FirebaseCoreInternal (11.2.0):
- GoogleUtilities/Environment (~> 7.8) - "GoogleUtilities/NSData+zlib (~> 8.0)"
- GoogleUtilities/UserDefaults (~> 7.8) - FirebaseInstallations (11.2.0):
- PromisesObjC (~> 2.1) - FirebaseCore (~> 11.0)
- FirebaseMessaging (10.27.0): - GoogleUtilities/Environment (~> 8.0)
- FirebaseCore (~> 10.0) - GoogleUtilities/UserDefaults (~> 8.0)
- FirebaseInstallations (~> 10.0) - PromisesObjC (~> 2.4)
- GoogleDataTransport (~> 9.3) - FirebaseMessaging (11.0.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_image_compress_common (1.0.0):
- Flutter
- Mantle
- SDWebImage
- SDWebImageWebPCoder
- flutter_secure_storage (6.0.0): - flutter_secure_storage (6.0.0):
- Flutter - Flutter
- google_sign_in_ios (0.0.1): - google_sign_in_ios (0.0.1):
@@ -63,62 +73,87 @@ PODS:
- FlutterMacOS - FlutterMacOS
- GoogleSignIn (~> 7.1) - GoogleSignIn (~> 7.1)
- GTMSessionFetcher (>= 3.4.0) - GTMSessionFetcher (>= 3.4.0)
- GoogleDataTransport (9.4.1): - GoogleDataTransport (10.1.0):
- GoogleUtilities/Environment (~> 7.7) - nanopb (~> 3.30910.0)
- nanopb (< 2.30911.0, >= 2.30908.0) - PromisesObjC (~> 2.4)
- PromisesObjC (< 3.0, >= 1.2)
- 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)
- GoogleUtilities/AppDelegateSwizzler (7.13.3): - GoogleUtilities/AppDelegateSwizzler (8.0.2):
- 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/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
- 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)
- GTMSessionFetcher (3.4.1): - GTMSessionFetcher (3.5.0):
- GTMSessionFetcher/Full (= 3.4.1) - GTMSessionFetcher/Full (= 3.5.0)
- GTMSessionFetcher/Core (3.4.1) - GTMSessionFetcher/Core (3.5.0)
- GTMSessionFetcher/Full (3.4.1): - GTMSessionFetcher/Full (3.5.0):
- GTMSessionFetcher/Core - GTMSessionFetcher/Core
- nanopb (2.30910.0): - image_cropper (0.0.4):
- nanopb/decode (= 2.30910.0) - Flutter
- nanopb/encode (= 2.30910.0) - TOCropViewController (~> 2.7.4)
- nanopb/decode (2.30910.0) - image_picker_ios (0.0.1):
- nanopb/encode (2.30910.0) - Flutter
- libwebp (1.3.2):
- libwebp/demux (= 1.3.2)
- libwebp/mux (= 1.3.2)
- libwebp/sharpyuv (= 1.3.2)
- libwebp/webp (= 1.3.2)
- libwebp/demux (1.3.2):
- libwebp/webp
- libwebp/mux (1.3.2):
- libwebp/demux
- libwebp/sharpyuv (1.3.2)
- libwebp/webp (1.3.2):
- libwebp/sharpyuv
- Mantle (2.2.0):
- Mantle/extobjc (= 2.2.0)
- Mantle/extobjc (2.2.0)
- nanopb (3.30910.0):
- nanopb/decode (= 3.30910.0)
- nanopb/encode (= 3.30910.0)
- nanopb/decode (3.30910.0)
- nanopb/encode (3.30910.0)
- path_provider_foundation (0.0.1): - path_provider_foundation (0.0.1):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- PromisesObjC (2.4.0) - PromisesObjC (2.4.0)
- RecaptchaInterop (100.0.0) - RecaptchaInterop (100.0.0)
- SDWebImage (5.19.7):
- SDWebImage/Core (= 5.19.7)
- SDWebImage/Core (5.19.7)
- SDWebImageWebPCoder (0.14.6):
- libwebp (~> 1.0)
- SDWebImage/Core (~> 5.17)
- share (0.0.1): - share (0.0.1):
- Flutter - Flutter
- sqflite (0.0.3): - sqflite (0.0.3):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- TOCropViewController (2.7.4)
- url_launcher_ios (0.0.1): - url_launcher_ios (0.0.1):
- Flutter - Flutter
- vibration (1.7.5): - vibration (1.7.5):
@@ -130,8 +165,11 @@ DEPENDENCIES:
- 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`)
- Flutter (from `Flutter`) - Flutter (from `Flutter`)
- flutter_image_compress_common (from `.symlinks/plugins/flutter_image_compress_common/ios`)
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/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_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- share (from `.symlinks/plugins/share/ios`) - share (from `.symlinks/plugins/share/ios`)
- sqflite (from `.symlinks/plugins/sqflite/darwin`) - sqflite (from `.symlinks/plugins/sqflite/darwin`)
@@ -144,7 +182,9 @@ SPEC REPOS:
- Firebase - Firebase
- FirebaseAppCheckInterop - FirebaseAppCheckInterop
- FirebaseAuth - FirebaseAuth
- FirebaseAuthInterop
- FirebaseCore - FirebaseCore
- FirebaseCoreExtension
- FirebaseCoreInternal - FirebaseCoreInternal
- FirebaseInstallations - FirebaseInstallations
- FirebaseMessaging - FirebaseMessaging
@@ -153,9 +193,14 @@ SPEC REPOS:
- GoogleUtilities - GoogleUtilities
- GTMAppAuth - GTMAppAuth
- GTMSessionFetcher - GTMSessionFetcher
- libwebp
- Mantle
- nanopb - nanopb
- PromisesObjC - PromisesObjC
- RecaptchaInterop - RecaptchaInterop
- SDWebImage
- SDWebImageWebPCoder
- TOCropViewController
EXTERNAL SOURCES: EXTERNAL SOURCES:
device_info_plus: device_info_plus:
@@ -168,10 +213,16 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/firebase_messaging/ios" :path: ".symlinks/plugins/firebase_messaging/ios"
Flutter: Flutter:
:path: Flutter :path: Flutter
flutter_image_compress_common:
:path: ".symlinks/plugins/flutter_image_compress_common/ios"
flutter_secure_storage: flutter_secure_storage:
:path: ".symlinks/plugins/flutter_secure_storage/ios" :path: ".symlinks/plugins/flutter_secure_storage/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:
:path: ".symlinks/plugins/image_cropper/ios"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios"
path_provider_foundation: path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin" :path: ".symlinks/plugins/path_provider_foundation/darwin"
share: share:
@@ -186,30 +237,40 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa
device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
Firebase: 26b040b20866a55f55eb3611b9fcf3ae64816b86 Firebase: 9f574c08c2396885b5e7e100ed4293d956218af9
firebase_auth: cc4ea3f47dda7afc4c64f59540aa570aca60814d firebase_auth: 16ac5db3d064db837ecd845080d7e18e4be7c66d
firebase_core: f8d0424c45e0f1e596811085fc12c638d628457c firebase_core: ceec591a66629daaee82d3321551692c4a871493
firebase_messaging: 8b29edaf5adfd3b52b5bfa5af8128c44164670c6 firebase_messaging: 15d8b557010f3bb7b98d0302e1c7c8fbcd244425
FirebaseAppCheckInterop: 0dd062c9926a76332ca5711dbed6f1a9ac540b54 FirebaseAppCheckInterop: ea21450529cf0ebd132788dd8916a0269abc684f
FirebaseAuth: 77a012b7e08042bf44d0db835ca2e86e6ca7bbd3 FirebaseAuth: d5cf28be74d7e82257f6a3f717509eff70d3cf4a
FirebaseCore: a2b95ae4ce7c83ceecfbbbe3b6f1cddc7415a808 FirebaseAuthInterop: 47c09558af5d1b31f16fb352387c72d4804f4a24
FirebaseCoreInternal: 4b297a2d56063dbea2c1d0d04222d44a8d058862 FirebaseCore: 3cf438f431f18c12cdf2aaf64434648b63f7e383
FirebaseInstallations: 766dabca09fd94aef922538aaf144cc4a6fb6869 FirebaseCoreExtension: cda74ddfb001224bd8fd1d6e74698b4ed07803de
FirebaseMessaging: 585984d0a1df120617eb10b44cad8968b859815e FirebaseCoreInternal: 0c569513412da9f3b31bd0b340013bbee8f295c5
FirebaseInstallations: 771177d89d6c451dc6e50085ec82e2fc77ed0a4a
FirebaseMessaging: d2d1d9c62c46dd2db49a952f7deb5b16ad2c9742
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
google_sign_in_ios: 07375bfbf2620bc93a602c0e27160d6afc6ead38 google_sign_in_ios: 07375bfbf2620bc93a602c0e27160d6afc6ead38
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db
GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de
GTMSessionFetcher: 8000756fc1c19d2e5697b90311f7832d2e33f6cd GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
nanopb: 438bc412db1928dac798aa6fd75726007be04262 image_cropper: 37d40f62177c101ff4c164906d259ea2c3aa70cf
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21 RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
share: 0b2c3e82132f5888bccca3351c504d0003b3b410 share: 0b2c3e82132f5888bccca3351c504d0003b3b410
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
vibration: 7d883d141656a1c1a6d8d238616b2042a51a1241 vibration: 7d883d141656a1c1a6d8d238616b2042a51a1241

View File

@@ -1,7 +1,7 @@
import Flutter import Flutter
import UIKit import UIKit
@UIApplicationMain @main
@objc class AppDelegate: FlutterAppDelegate { @objc class AppDelegate: FlutterAppDelegate {
override func application( override func application(
_ application: UIApplication, _ application: UIApplication,

View File

@@ -12,6 +12,8 @@ class AK {
static final String ocpApimSubscriptionKey = Env.ocpApimSubscriptionKey; static final String ocpApimSubscriptionKey = Env.ocpApimSubscriptionKey;
static final String anthropicAIkeySeferNew = static final String anthropicAIkeySeferNew =
X.r(X.r(X.r(Env.anthropicAIkeySeferNew, cn), cC), cs); X.r(X.r(X.r(Env.anthropicAIkeySeferNew, cn), cC), cs);
static final String anthropicAIkeySeferNewHamzaayedpython =
X.r(X.r(X.r(Env.anthropicAIkeySeferNewHamzaayedpython, cn), cC), cs);
static final String emailService = (Env.emailService); static final String emailService = (Env.emailService);
/////////// ///////////

View File

@@ -6,6 +6,7 @@ class BoxName {
static const String tokenParent = "tokenParent"; static const String tokenParent = "tokenParent";
static const String lang = "lang"; static const String lang = "lang";
static const String gender = "gender"; static const String gender = "gender";
static const String serverChosen = "serverChosen";
static const String carType = "carType"; static const String carType = "carType";
static const String carPlate = "carPlate"; static const String carPlate = "carPlate";
static const String isVerified = '0'; static const String isVerified = '0';

View File

@@ -1,7 +1,19 @@
import '../env/env.dart'; import '../env/env.dart';
import '../main.dart';
import 'box_name.dart';
class AppLink { class AppLink {
static final String server = Env.serverPHP; // static final String seferPaymentServer = Env.seferPaymentServer;
// // static final String seferPaymentServer = '${Env.seferCairoServer}/ride';
static final String seferAlexandriaServer = Env.seferAlexandriaServer;
static final String seferCairoServer = Env.seferCairoServer;
static final String seferGizaServer = Env.seferGizaServer;
// static final String server = Env.serverPHP;
static final String endPoint = box.read(BoxName.serverChosen);
static final String server = Env.seferCairoServer;
// static const String server = "https://sefer.click/sefer/sefer";
static String googleMapsLink = 'https://maps.googleapis.com/maps/api/'; static String googleMapsLink = 'https://maps.googleapis.com/maps/api/';
static String llama = 'https://api.llama-api.com/chat/completions'; static String llama = 'https://api.llama-api.com/chat/completions';
static String getTokens = "$server/ride/firebase/get.php"; static String getTokens = "$server/ride/firebase/get.php";
@@ -30,7 +42,7 @@ class AppLink {
static String updateAccountBank = "$authCaptin/updateAccountBank.php"; static String updateAccountBank = "$authCaptin/updateAccountBank.php";
static String getAccount = "$authCaptin/getAccount.php"; static String getAccount = "$authCaptin/getAccount.php";
static String test = "$server/test.php"; static String test = "$server/test.php";
static String serviceApp = "$server/serviceApp"; static String serviceApp = "$server/serviceapp";
static String getPassengersByPhone = static String getPassengersByPhone =
"$server/serviceApp/getPassengersByPhone.php"; "$server/serviceApp/getPassengersByPhone.php";
static String getDriverByPhone = "$serviceApp/getDriverByPhone.php"; static String getDriverByPhone = "$serviceApp/getDriverByPhone.php";
@@ -42,6 +54,7 @@ class AppLink {
"$serviceApp/getPassengersNotCompleteRegistration.php"; "$serviceApp/getPassengersNotCompleteRegistration.php";
static String addNotesDriver = "$serviceApp/addNotesDriver.php"; static String addNotesDriver = "$serviceApp/addNotesDriver.php";
static String getCarPlateNotEdit = "$serviceApp/getCarPlateNotEdit.php"; static String getCarPlateNotEdit = "$serviceApp/getCarPlateNotEdit.php";
static String getdriverWithoutCar = "$serviceApp/getdriverWithoutCar.php";
static String addNotesPassenger = "$serviceApp/addNotesPassenger.php"; static String addNotesPassenger = "$serviceApp/addNotesPassenger.php";
static String editCarPlate = "$serviceApp/editCarPlate.php"; static String editCarPlate = "$serviceApp/editCarPlate.php";
static String getComplaintAllData = "$serviceApp/getComplaintAllData.php"; static String getComplaintAllData = "$serviceApp/getComplaintAllData.php";
@@ -50,6 +63,7 @@ class AppLink {
static String addCriminalDocuments = "$authCaptin/addCriminalDocuments.php"; static String addCriminalDocuments = "$authCaptin/addCriminalDocuments.php";
static String ride = '$server/ride'; static String ride = '$server/ride';
static String addRegisrationCar = "$ride/RegisrationCar/add.php"; static String addRegisrationCar = "$ride/RegisrationCar/add.php";
static String addCartoDriver = "$serviceApp/addCartoDriver.php";
static String getRegisrationCar = "$ride/RegisrationCar/get.php"; static String getRegisrationCar = "$ride/RegisrationCar/get.php";
static String updateRegisrationCar = "$ride/RegisrationCar/update.php"; static String updateRegisrationCar = "$ride/RegisrationCar/update.php";
} }

View File

@@ -143,6 +143,7 @@ class CRUD {
Log.print('payload: ${payload}'); Log.print('payload: ${payload}');
Log.print('response.request: ${response.request}'); Log.print('response.request: ${response.request}');
Log.print('response.body: ${response.body}'); Log.print('response.body: ${response.body}');
Log.print('response.reasonPhrase: ${response.reasonPhrase}');
// print(response.statusCode); // print(response.statusCode);
var jsonData = jsonDecode(response.body); var jsonData = jsonDecode(response.body);
if (response.statusCode == 200) { if (response.statusCode == 200) {
@@ -150,6 +151,7 @@ class CRUD {
return response.body; return response.body;
} else { } else {
String errorMessage = jsonData['message']; String errorMessage = jsonData['message'];
Log.print('errorMessage: ${errorMessage}');
// Get.snackbar('Error'.tr, errorMessage.tr, // Get.snackbar('Error'.tr, errorMessage.tr,
// backgroundColor: AppColor.redColor); // backgroundColor: AppColor.redColor);
return (jsonData['status']); return (jsonData['status']);

View File

@@ -14,19 +14,24 @@ class MyTranslation extends Translations {
"orange": "برتقالي", "orange": "برتقالي",
"pink": "وردي", "pink": "وردي",
"brown": "بني", "brown": "بني",
"gray": "رمادي", "Eggplant": "باذنجان", "gray": "رمادي",
"Dark Red": "نبيتي",
"Sky Blue": "ازرق سماوي",
"Mocha": "موكا",
"cyan": "سماوي", "cyan": "سماوي",
"magenta": "أرجواني داكن", "magenta": "بنفسجي",
"lime": "ليموني", "lime": "ليموني",
"indigo": "نيلي", "indigo": "نيلي",
"violet": "بنفسجي", "violet": "بنفسجي",
"raw gray": "رمادي ",
"gold": "ذهبي", "gold": "ذهبي",
"silver": "فضي", "silver": "فضي",
"teal": "تركوازي", "teal": "تركوازي",
"navy": "كحلي", "navy": "كحلي",
"Eggplant": "باذنجان",
"Dark Red": "نبيتي",
"Sky Blue": "أزرق سماوي",
"Mocha": "موكا",
"Champagne": "شامبان",
"Bronze": "برونزي",
"Maroon": "ماروني",
"Capture an Image of Your Criminal Record": "Capture an Image of Your Criminal Record":
"التقط صورة لسجلك الجنائي", "التقط صورة لسجلك الجنائي",
"IssueDate": "تاريخ الإصدار", "IssueDate": "تاريخ الإصدار",

View File

@@ -2,32 +2,40 @@ import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:service/constant/api_key.dart';
import 'package:service/constant/box_name.dart';
import 'package:service/constant/links.dart'; import 'package:service/constant/links.dart';
import 'package:service/controller/functions/crud.dart'; import 'package:service/controller/functions/crud.dart';
import 'package:service/main.dart';
import '../views/home/main.dart'; import '../views/home/main.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
class LoginController extends GetxController { class LoginController extends GetxController {
var email = TextEditingController(); var email = TextEditingController();
var password = TextEditingController(); var password = TextEditingController();
final formKey = GlobalKey<FormState>(); final formKey = GlobalKey<FormState>();
// Use FlutterSecureStorage instead of GetStorage
final FlutterSecureStorage storage = const FlutterSecureStorage();
void login() async { void login() async {
if (box.read(BoxName.email) == AK.emailService) { String? storedEmail = await storage.read(key: 'email');
Get.off(Main());
if (storedEmail != null) {
Get.off(() => Main());
} else { } else {
if (formKey.currentState!.validate()) { if (formKey.currentState!.validate()) {
var res = await CRUD().get(link: AppLink.login, payload: { var res = await CRUD().get(link: AppLink.login, payload: {
"email": email.text, "email": email.text,
"password": password.text, "password": password.text,
}); });
if (res != 'failure') { if (res != 'failure') {
var d = jsonDecode(res); var d = jsonDecode(res);
if (d['message'] == "Login successful") { if (d['message'] == "Login successful") {
box.write(BoxName.email, email.text); // Save data securely in FlutterSecureStorage
await storage.write(key: 'email', value: d['data']['email']);
await storage.write(key: 'name', value: d['data']['first_name']);
await storage.write(key: 'driverID', value: d['data']['id']);
Get.off(() => Main()); Get.off(() => Main());
} }

View File

@@ -202,6 +202,91 @@ class MainController extends GetxController {
} }
} }
List driverWithoutCar = [];
getdriverWithoutCar() async {
var res = await CRUD().get(link: AppLink.getdriverWithoutCar, payload: {});
if (res != 'failure') {
var d = jsonDecode(res)['message'];
driverWithoutCar = d;
update();
} else {
MyDialog().getDialog('No Car found yet'.tr, 'thanks'.tr, const SizedBox(),
() {
Get.back();
});
}
}
Future<void> addRegistrationCarEgyptHandling({
required String driverId,
required String carPlate,
required String color,
required String colorHex,
required String year,
required String make,
required String model,
required String expirationDate,
required String owner,
}) async {
try {
isLoading = true;
update();
var payload = {
'driverID': driverId,
'vin': 'vin',
'car_plate': carPlate,
'make': make,
'model': model,
'year': year,
'expiration_date': expirationDate,
'color': color,
'owner': owner,
'color_hex': colorHex,
'address': 'addressCar',
'displacement': 'displacement',
'fuel': 'fuel',
'registration_date': '2024-09-06',
};
Log.print('Payload: $payload');
var res =
await CRUD().post(link: AppLink.addCartoDriver, payload: payload);
isLoading = false;
update();
var status = jsonDecode(res);
Log.print('res: $res');
Log.print('status: $status');
if (status['status'] == 'success') {
await Future.wait([
CRUD().post(
link:
'${AppLink.seferAlexandriaServer}/ride/RegisrationCar/add.php',
payload: payload),
CRUD().post(
link: '${AppLink.seferGizaServer}/ride/RegisrationCar/add.php',
payload: payload),
]);
Get.snackbar('Success', 'Registration successful',
backgroundColor: AppColor.greenColor);
Get.back();
} else {
Log.print('Error: Unexpected status: ${status['status']}');
Get.snackbar('Error', 'Registration failed',
backgroundColor: Colors.red);
}
} catch (e) {
Log.print('Error: $e');
Get.snackbar('Error', 'An error occurred during registration',
backgroundColor: Colors.red);
}
}
editCarPlateNotEdit( editCarPlateNotEdit(
String driverId, String driverId,
String carPlate, String carPlate,
@@ -226,13 +311,14 @@ class MainController extends GetxController {
}); });
Log.print('res: ${res}'); Log.print('res: ${res}');
if (res != 'failure') { if (res != 'failure') {
Get.snackbar(res, '', backgroundColor: AppColor.greenColor); // Get.snackbar(res, '', backgroundColor: AppColor.greenColor);
Get.back();
carplateController.clear(); carplateController.clear();
yearController.clear(); yearController.clear();
makeController.clear(); makeController.clear();
modelController.clear(); modelController.clear();
ownerController.clear(); ownerController.clear();
Get.back();
await getCarPlateNotEdit(); await getCarPlateNotEdit();
update(); update();
} else { } else {

View File

@@ -0,0 +1,318 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:intl/intl.dart';
import 'package:service/constant/style.dart';
import 'package:service/controller/mainController/pages/edit_car.dart';
import 'package:service/views/widgets/my_scafold.dart';
import '../../../constant/colors.dart';
import '../../../constant/links.dart';
import '../../../print.dart';
import '../../../views/widgets/my_textField.dart';
import '../../functions/crud.dart';
import '../main_controller.dart';
class AddCar extends StatelessWidget {
const AddCar({super.key});
@override
Widget build(BuildContext context) {
Get.put(MainController());
return GetBuilder<MainController>(builder: (mainController) {
return MyScaffold(
title: 'Edit car details'.tr,
isleading: true,
body: [
Expanded(
child: ListView.builder(
padding: const EdgeInsets.all(16.0),
itemCount: mainController
.driverWithoutCar.length, // 10 fields + 1 save button
itemBuilder: (context, index) {
var carData = mainController.driverWithoutCar[index];
return Padding(
padding: const EdgeInsets.all(8.0),
child: InkWell(
onTap: () {
Get.to(AddCarForm(carData: carData));
},
child: Container(
decoration: AppStyle.boxDecoration1,
child: Text(carData['name_arabic'])),
),
);
}),
),
],
);
});
}
}
class AddCarForm extends StatelessWidget {
final Map carData;
const AddCarForm({super.key, required this.carData});
@override
Widget build(BuildContext context) {
Get.put(MainController());
return GetBuilder<MainController>(builder: (mainController) {
return MyScaffold(title: 'Add Car', isleading: true, body: [
ListView(
children: [
Column(
children: [
Image.network(
'https://sefer.click/sefer/card_image/car_front-${carData['id']}.jpg',
height: 200,
width: double.maxFinite,
fit: BoxFit.fill,
),
Image.network(
'https://sefer.click/sefer/card_image/car_back-${carData['id']}.jpg',
height: 200,
width: double.maxFinite,
fit: BoxFit.fill,
),
],
),
const SizedBox(height: 9),
Form(
key: mainController.formKey,
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
SizedBox(
width: Get.width * .6,
child: MyTextForm(
controller: mainController.carplateController,
label: 'car plate'.tr,
hint: 'car plate'.tr,
type: TextInputType.name,
),
),
IconButton(
onPressed: () async {
if (mainController.formKey.currentState!.validate()) {
await mainController
.addRegistrationCarEgyptHandling(
driverId: carData['id'].toString(),
carPlate: mainController.carplateController.text,
color: mainController.colorController.text,
colorHex:
mainController.colorHex.value.toString(),
year: mainController.yearController.text,
make: mainController.makeController.text,
model: mainController.modelController.text,
expirationDate:
mainController.expirationDateController.text,
owner: mainController.ownerController.text,
);
}
},
icon: const Icon(
Icons.upload_outlined,
color: AppColor.blueColor,
),
),
],
),
// Other fields
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SizedBox(
width: Get.width * .4,
child: MyTextForm(
controller: mainController.yearController,
label: 'Year'.tr,
hint: 'Year'.tr,
type: TextInputType.number,
),
),
SizedBox(
width: Get.width * .4,
child: DropdownButtonFormField<String>(
decoration: InputDecoration(
labelText: 'Color'.tr, // Localized label
),
value: mainController.colorHex.value.isEmpty
? null
: mainController.colorHex
.value, // Use the hex value as the current value
items: [
{'red'.tr: '#FF0000'},
{'green'.tr: '#008000'},
{'blue'.tr: '#0000FF'},
{'black'.tr: '#000000'},
{'white'.tr: '#FFFFFF'},
{'yellow'.tr: '#FFFF00'},
{'purple'.tr: '#800080'},
{'orange'.tr: '#FFA500'},
{'pink'.tr: '#FFC0CB'},
{'brown'.tr: '#A52A2A'},
{'gray'.tr: '#808080'},
{'cyan'.tr: '#00FFFF'},
{'magenta'.tr: '#FF00FF'},
{'lime'.tr: '#00FF00'},
{'indigo'.tr: '#4B0082'},
{'violet'.tr: '#EE82EE'},
{'gold'.tr: '#FFD700'},
{'silver'.tr: '#C0C0C0'},
{'teal'.tr: '#008080'},
{'navy'.tr: '#000080'},
].map((colorMap) {
String colorName = colorMap.keys.first;
String colorValue = colorMap.values.first;
return DropdownMenuItem<String>(
value: colorValue,
child: Text(colorName),
);
}).toList(),
onChanged: (value) {
if (value != null) {
// Find the selected color name based on the hex value
String selectedColorName = '';
for (var colorMap in [
{'red'.tr: '#FF0000'},
{'green'.tr: '#008000'},
{'blue'.tr: '#0000FF'},
{'black'.tr: '#000000'},
{'white'.tr: '#FFFFFF'},
{'yellow'.tr: '#FFFF00'},
{'purple'.tr: '#800080'},
{'orange'.tr: '#FFA500'},
{'pink'.tr: '#FFC0CB'},
{'brown'.tr: '#A52A2A'},
{'gray'.tr: '#808080'},
{'cyan'.tr: '#00FFFF'},
{'magenta'.tr: '#FF00FF'},
{'lime'.tr: '#00FF00'},
{'indigo'.tr: '#4B0082'},
{'violet'.tr: '#EE82EE'},
{'gold'.tr: '#FFD700'},
{'silver'.tr: '#C0C0C0'},
{'teal'.tr: '#008080'},
{'navy'.tr: '#000080'},
]) {
if (colorMap.values.first == value) {
selectedColorName = colorMap.keys.first;
break;
}
}
mainController.colorController.text =
selectedColorName;
mainController.colorHex.value = value;
}
},
),
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SizedBox(
width: Get.width * .4,
child: MyTextForm(
controller: mainController.makeController,
label: 'Make'.tr,
hint: 'Make'.tr,
type: TextInputType.name,
),
),
SizedBox(
width: Get.width * .4,
child: MyTextForm(
controller: mainController.modelController,
label: 'Model'.tr,
hint: 'Model'.tr,
type: TextInputType.name,
),
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SizedBox(
width: Get.width * .4,
child: TextField(
controller: mainController.expirationDateController,
decoration: InputDecoration(
labelText: 'Expiration Date'.tr,
hintText: 'Expiration Date'.tr,
),
readOnly:
true, // Make the field read-only to prevent manual input
onTap: () async {
DateTime pickedDate =
DateTime.now(); // Declare the variable here
await showCupertinoModalPopup<void>(
context: context,
builder: (context) => Container(
height: 250,
color: Colors.white,
child: Column(
children: [
SizedBox(
height: 150,
child: CupertinoDatePicker(
initialDateTime: pickedDate,
minimumDate: DateTime(
1955), // Set the starting date
maximumDate: DateTime(
2034), // Set the ending date
mode: CupertinoDatePickerMode.date,
onDateTimeChanged: (DateTime dateTime) {
pickedDate = dateTime;
},
),
),
CupertinoButton(
child: Text('Done'.tr),
onPressed: () {
String formattedDate =
DateFormat('yyyy-MM-dd')
.format(pickedDate);
mainController.expirationDateController
.text = formattedDate.toString();
Navigator.of(context).pop();
},
),
],
),
),
);
},
),
),
SizedBox(
width: Get.width * .4,
child: MyTextForm(
controller: mainController.ownerController,
label: 'Owner'.tr,
hint: 'Owner'.tr,
type: TextInputType.name,
),
),
],
),
],
),
)
],
)
]);
});
}
}

View File

@@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
@@ -21,16 +22,36 @@ class EditCar extends StatelessWidget {
Column( Column(
children: [ children: [
Image.network( Image.network(
'https://api.sefer.live/sefer/card_image/car_front-${carData['driverID']}.jpg', 'https://sefer.click/sefer/card_image/car_front-${carData['driverID']}.jpg',
height: 200, height: 200,
width: double.maxFinite, width: double.maxFinite,
fit: BoxFit.fill, fit: BoxFit.fill,
errorBuilder: (BuildContext context, Object exception,
StackTrace? stackTrace) {
// If the image fails to load, use the _copy version
return Image.network(
'https://sefer.click/sefer/card_image/car_front-${carData['driverID']}_copy.jpg',
height: 200,
width: double.maxFinite,
fit: BoxFit.fill,
);
},
), ),
Image.network( Image.network(
'https://api.sefer.live/sefer/card_image/car_back-${carData['driverID']}.jpg', 'https://sefer.click/sefer/card_image/car_back-${carData['driverID']}.jpg',
height: 200, height: 200,
width: double.maxFinite, width: double.maxFinite,
fit: BoxFit.fill, fit: BoxFit.fill,
errorBuilder: (BuildContext context, Object exception,
StackTrace? stackTrace) {
// If the image fails to load, use the _copy version
return Image.network(
'https://sefer.click/sefer/card_image/car_back-${carData['driverID']}_copy.jpg',
height: 200,
width: double.maxFinite,
fit: BoxFit.fill,
);
},
), ),
], ],
), ),
@@ -198,33 +219,55 @@ class EditCar extends StatelessWidget {
children: [ children: [
SizedBox( SizedBox(
width: Get.width * .4, width: Get.width * .4,
child: SizedBox( child: TextField(
width: Get.width * .4, controller: mainController.expirationDateController,
child: TextField( decoration: InputDecoration(
controller: mainController.expirationDateController, labelText: 'Expiration Date'.tr,
decoration: InputDecoration( hintText: 'Expiration Date'.tr,
labelText: 'Expiration Date'.tr,
hintText: 'Expiration Date'.tr,
),
readOnly:
true, // Make the field read-only to prevent manual input
onTap: () async {
DateTime? pickedDate = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate:
DateTime(2000), // Set the starting date
lastDate: DateTime(2101), // Set the ending date
);
if (pickedDate != null) {
String formattedDate =
DateFormat('yyyy-MM-dd').format(pickedDate);
mainController.expirationDateController.text =
formattedDate.toString();
}
},
), ),
readOnly:
true, // Make the field read-only to prevent manual input
onTap: () async {
DateTime pickedDate =
DateTime.now(); // Declare the variable here
await showCupertinoModalPopup<void>(
context: context,
builder: (context) => Container(
height: 250,
color: Colors.white,
child: Column(
children: [
SizedBox(
height: 150,
child: CupertinoDatePicker(
initialDateTime: pickedDate,
minimumDate: DateTime(
1955), // Set the starting date
maximumDate: DateTime(
2034), // Set the ending date
mode: CupertinoDatePickerMode.date,
onDateTimeChanged: (DateTime dateTime) {
pickedDate = dateTime;
},
),
),
CupertinoButton(
child: Text('Done'.tr),
onPressed: () {
String formattedDate =
DateFormat('yyyy-MM-dd')
.format(pickedDate);
mainController.expirationDateController
.text = formattedDate.toString();
Navigator.of(context).pop();
},
),
],
),
),
);
},
), ),
), ),
SizedBox( SizedBox(

View File

@@ -451,6 +451,7 @@ class RegisterCaptainController extends GetxController {
Future<void> addDriverEgypt() async { Future<void> addDriverEgypt() async {
isLoading = true; isLoading = true;
update(); update();
var added = await storage.read(key: 'name');
var payload = { var payload = {
'first_name': responseIdEgyptDriverLicense['firstName']?.toString() ?? 'first_name': responseIdEgyptDriverLicense['firstName']?.toString() ??
@@ -495,8 +496,7 @@ class RegisterCaptainController extends GetxController {
'status': 'yet', 'status': 'yet',
'birthdate': extractDOB( 'birthdate': extractDOB(
responseIdEgyptDriverLicense['national_number'].toString()), responseIdEgyptDriverLicense['national_number'].toString()),
'maritalStatus': 'maritalStatus': added.toString(),
responseIdEgyptBack['maritalStatus']?.toString() ?? 'Not specified',
'site': responseIdEgyptDriverLicense['address']?.toString() ?? 'site': responseIdEgyptDriverLicense['address']?.toString() ??
'Not specified', 'Not specified',
'employmentType': 'employmentType':
@@ -510,6 +510,14 @@ class RegisterCaptainController extends GetxController {
// Handle response // Handle response
if (status1['status'] == 'success') { if (status1['status'] == 'success') {
isDriverSaved = true; isDriverSaved = true;
var res = CRUD().post(
link: '${AppLink.seferGizaServer}/auth/captin/register.php',
payload: payload);
Log.print('res: ${res}');
var res1 = CRUD().post(
link: '${AppLink.seferAlexandriaServer}/auth/captin/register.php',
payload: payload);
Log.print('res: ${res1}');
Get.snackbar('Success', 'Driver data saved successfully', Get.snackbar('Success', 'Driver data saved successfully',
backgroundColor: AppColor.greenColor); backgroundColor: AppColor.greenColor);
} else { } else {
@@ -521,7 +529,7 @@ class RegisterCaptainController extends GetxController {
Future<void> addDriverEgyptHanding() async { Future<void> addDriverEgyptHanding() async {
isLoading = true; isLoading = true;
update(); update();
var added = await storage.read(key: 'name');
var payload = { var payload = {
'first_name': firstName.value.isNotEmpty 'first_name': firstName.value.isNotEmpty
? firstName.value ? firstName.value
@@ -581,9 +589,7 @@ class RegisterCaptainController extends GetxController {
? extractDOB(responseIdEgyptBack['nationalID']) ? extractDOB(responseIdEgyptBack['nationalID'])
: extractDOB( : extractDOB(
responseIdEgyptDriverLicense['national_number'].toString()), responseIdEgyptDriverLicense['national_number'].toString()),
'maritalStatus': maritalStatus.value.isNotEmpty 'maritalStatus': added.toString(),
? maritalStatus.value
: responseIdEgyptBack['maritalStatus'],
'site': site.value.isNotEmpty 'site': site.value.isNotEmpty
? site.value ? site.value
: responseIdEgyptDriverLicense['address'], : responseIdEgyptDriverLicense['address'],
@@ -600,6 +606,12 @@ class RegisterCaptainController extends GetxController {
// Handle response // Handle response
if (status1['status'] == 'success') { if (status1['status'] == 'success') {
isDriverSaved = true; isDriverSaved = true;
CRUD().post(
link: '${AppLink.seferGizaServer}/auth/captin/register.php',
payload: payload);
CRUD().post(
link: '${AppLink.seferAlexandriaServer}/auth/captin/register.php',
payload: payload);
Get.snackbar('Success', 'Driver data saved successfully', Get.snackbar('Success', 'Driver data saved successfully',
backgroundColor: AppColor.greenColor); backgroundColor: AppColor.greenColor);
} else { } else {
@@ -616,6 +628,22 @@ class RegisterCaptainController extends GetxController {
}); });
if (res != 'failure') { if (res != 'failure') {
Get.snackbar('uploaded sucssefuly'.tr, ''); Get.snackbar('uploaded sucssefuly'.tr, '');
CRUD().post(
link:
'${AppLink.seferAlexandriaServer}/auth/captin/addCriminalDocuments.php',
payload: {
"driverId": box.read(BoxName.driverID),
"IssueDate": responseCriminalRecordEgypt['IssueDate'],
"InspectionResult": responseCriminalRecordEgypt['InspectionResult'],
});
CRUD().post(
link:
'${AppLink.seferGizaServer}/auth/captin/addCriminalDocuments.php',
payload: {
"driverId": box.read(BoxName.driverID),
"IssueDate": responseCriminalRecordEgypt['IssueDate'],
"InspectionResult": responseCriminalRecordEgypt['InspectionResult'],
});
} }
} }
@@ -686,6 +714,54 @@ class RegisterCaptainController extends GetxController {
var status = jsonDecode(res); var status = jsonDecode(res);
if (status['status'] == 'success') { if (status['status'] == 'success') {
isCarSaved = true; isCarSaved = true;
CRUD().post(
link:
'${AppLink.seferAlexandriaServer}/ride/RegisrationCar/add.php',
payload: {
'driverID': driverId,
'vin': responseIdCardDriverEgyptBack['chassis'].toString(),
'car_plate':
responseIdCardDriverEgyptFront['car_plate'].toString(),
'make': responseIdCardDriverEgyptBack['make'].toString(),
'model': responseIdCardDriverEgyptBack['model'],
'year': responseIdCardDriverEgyptBack['year'].toString(),
'expiration_date':
responseIdCardDriverEgyptFront['LicenseExpirationDate']
.toString(),
'color': responseIdCardDriverEgyptBack['color'],
'owner': responseIdCardDriverEgyptFront['owner'],
'color_hex':
responseIdCardDriverEgyptBack['color_hex'].toString(),
'address': responseIdCardDriverEgyptFront['address'].toString(),
'displacement':
responseIdCardDriverEgyptBack['engine'].toString(),
'fuel': responseIdCardDriverEgyptBack['fuel'].toString(),
'registration_date': '$inspectionDateTime',
});
CRUD().post(
link: '${AppLink.seferGizaServer}/ride/RegisrationCar/add.php',
payload: {
'driverID': driverId,
'vin': responseIdCardDriverEgyptBack['chassis'].toString(),
'car_plate':
responseIdCardDriverEgyptFront['car_plate'].toString(),
'make': responseIdCardDriverEgyptBack['make'].toString(),
'model': responseIdCardDriverEgyptBack['model'],
'year': responseIdCardDriverEgyptBack['year'].toString(),
'expiration_date':
responseIdCardDriverEgyptFront['LicenseExpirationDate']
.toString(),
'color': responseIdCardDriverEgyptBack['color'],
'owner': responseIdCardDriverEgyptFront['owner'],
'color_hex':
responseIdCardDriverEgyptBack['color_hex'].toString(),
'address': responseIdCardDriverEgyptFront['address'].toString(),
'displacement':
responseIdCardDriverEgyptBack['engine'].toString(),
'fuel': responseIdCardDriverEgyptBack['fuel'].toString(),
'registration_date': '$inspectionDateTime',
});
Get.snackbar('Success', 'message', Get.snackbar('Success', 'message',
backgroundColor: AppColor.greenColor); backgroundColor: AppColor.greenColor);
} }
@@ -758,6 +834,14 @@ class RegisterCaptainController extends GetxController {
if (status['status'] == 'success') { if (status['status'] == 'success') {
isCarSaved = true; isCarSaved = true;
CRUD().post(
link:
'${AppLink.seferAlexandriaServer}/ride/RegisrationCar/add.php',
payload: payload);
CRUD().post(
link: '${AppLink.seferGizaServer}/ride/RegisrationCar/add.php',
payload: payload);
Get.snackbar('Success', 'Registration successful', Get.snackbar('Success', 'Registration successful',
backgroundColor: AppColor.greenColor); backgroundColor: AppColor.greenColor);
Get.back(); Get.back();
@@ -775,30 +859,31 @@ class RegisterCaptainController extends GetxController {
String getColorHex(String colorName) { String getColorHex(String colorName) {
Map<String, String> colorMap = { Map<String, String> colorMap = {
'red'.tr: '#FF0000',
'green'.tr: '#008000',
'blue'.tr: '#0000FF',
'black'.tr: '#000000',
'white'.tr: '#FFFFFF', 'white'.tr: '#FFFFFF',
'yellow'.tr: '#FFFF00', 'maroon'.tr: '#800000', // Nabeeti
'purple'.tr: '#800080', 'red'.tr: '#FF0000',
'orange'.tr: '#FFA500',
'pink'.tr: '#FFC0CB',
'brown'.tr: '#A52A2A',
'gray'.tr: '#808080', 'gray'.tr: '#808080',
'cyan'.tr: '#00FFFF', 'green'.tr: '#008000',
'magenta'.tr: '#FF00FF', 'navy blue'.tr: '#000080',
'lime'.tr: '#00FF00', 'pink'.tr: '#FFC0CB',
'indigo'.tr: '#4B0082', 'black'.tr: '#000000',
'violet'.tr: '#EE82EE', 'dark blue'.tr: '#003366',
'gold'.tr: '#FFD700', 'turquoise'.tr: '#40E0D0',
'blue'.tr: '#0000FF',
'red ochre'.tr: '#C72C48',
'silver'.tr: '#C0C0C0', 'silver'.tr: '#C0C0C0',
'teal'.tr: '#008080', 'mocha'.tr: '#3B2E2A',
'navy'.tr: '#000080', 'tawny'.tr: '#D2B48C',
'Eggplant'.tr: '#800000', // Eggplant 'gold'.tr: '#FFD700',
'Dark Red'.tr: '#8B0000', // Dark Red (Maroon) 'verdi'.tr: '#008000',
'Sky Blue'.tr: '#87CEEB', // Sky Blue 'orange'.tr: '#FFA500',
'Mocha'.tr: '#C3B091', // Mocha 'peach'.tr: '#FFDAB9',
'brown'.tr: '#A52A2A',
'raw gray'.tr: '#6C6E6E',
'champagne'.tr: '#F7E7CE', // Champagne
'bronze'.tr: '#CD7F32', // Bronze
'red'.tr: '#FF0000', // Red
'maroon'.tr: '#800000' // Maroon
}; };
return colorMap[colorName.toLowerCase()] ?? return colorMap[colorName.toLowerCase()] ??
@@ -879,15 +964,16 @@ class RegisterCaptainController extends GetxController {
final response = await http.post( final response = await http.post(
Uri.parse('https://api.anthropic.com/v1/messages'), Uri.parse('https://api.anthropic.com/v1/messages'),
headers: { headers: {
'x-api-key': AK.anthropicAIkeySeferNew, 'x-api-key': AK.anthropicAIkeySeferNewHamzaayedpython,
'anthropic-version': '2023-06-01', 'anthropic-version': '2023-06-01',
'content-type': 'application/json' 'content-type': 'application/json'
}, },
body: requestBody, body: requestBody,
); );
Log.print('responseData: ${response.body}');
if (response.statusCode == 200) { if (response.statusCode == 200) {
var responseData = jsonDecode(utf8.decode(response.bodyBytes)); var responseData = jsonDecode(utf8.decode(response.bodyBytes));
Log.print('responseData: ${responseData}');
// Process the responseData as needed // Process the responseData as needed
if (idType == 'car_back') { if (idType == 'car_back') {
responseIdCardDriverEgyptBack = responseIdCardDriverEgyptBack =

17
lib/env/env.dart vendored
View File

@@ -19,9 +19,26 @@ abstract class Env {
@EnviedField(varName: 'serverPHP', obfuscate: true) @EnviedField(varName: 'serverPHP', obfuscate: true)
static final String serverPHP = _Env.serverPHP; static final String serverPHP = _Env.serverPHP;
@EnviedField(varName: 'seferAlexandriaServer', obfuscate: true)
static final String seferAlexandriaServer = _Env.seferAlexandriaServer;
@EnviedField(varName: 'seferPaymentServer', obfuscate: true)
static final String seferPaymentServer = _Env.seferPaymentServer;
@EnviedField(varName: 'seferCairoServer', obfuscate: true)
static final String seferCairoServer = _Env.seferCairoServer;
@EnviedField(varName: 'seferGizaServer', obfuscate: true)
static final String seferGizaServer = _Env.seferGizaServer;
@EnviedField(varName: 'anthropicAIkeySeferNew', obfuscate: true) @EnviedField(varName: 'anthropicAIkeySeferNew', obfuscate: true)
static final String anthropicAIkeySeferNew = _Env.anthropicAIkeySeferNew; static final String anthropicAIkeySeferNew = _Env.anthropicAIkeySeferNew;
@EnviedField(
varName: 'anthropicAIkeySeferNewHamzaayedpython', obfuscate: true)
static final String anthropicAIkeySeferNewHamzaayedpython =
_Env.anthropicAIkeySeferNewHamzaayedpython;
@EnviedField(varName: 'A', obfuscate: true) @EnviedField(varName: 'A', obfuscate: true)
static final String A = _Env.A; static final String A = _Env.A;

2025
lib/env/env.g.dart vendored

File diff suppressed because it is too large Load Diff

View File

@@ -19,25 +19,25 @@ const storage = FlutterSecureStorage();
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
if (Platform.isAndroid || Platform.isIOS) { // if (Platform.isAndroid || Platform.isIOS) {
await Firebase.initializeApp( // await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform, // options: DefaultFirebaseOptions.currentPlatform,
); // );
await FirebaseMessagesController().requestFirebaseMessagingPermission(); // await FirebaseMessagesController().requestFirebaseMessagingPermission();
// FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler); // // FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler);
List<Future> initializationTasks = [ // List<Future> initializationTasks = [
FirebaseMessagesController().getNotificationSettings(), // FirebaseMessagesController().getNotificationSettings(),
FirebaseMessagesController().getToken(), // FirebaseMessagesController().getToken(),
]; // ];
// cameras = await availableCameras(); // // cameras = await availableCameras();
await Future.wait(initializationTasks); // await Future.wait(initializationTasks);
SystemChrome.setPreferredOrientations([ // SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp, // DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown, // DeviceOrientation.portraitDown,
]); // ]);
} // }
runApp(MyApp()); runApp(MyApp());
} }

115
lib/models/cloudpanel.md Normal file
View File

@@ -0,0 +1,115 @@
## Site
IP Address: 92.113.25.174
Domain Name: https://sefer.click
Site User: sefer
Password: katm5g2LLY55a7SJcnxK
## Database
Host: 127.0.0.1
Port: 3306
Database Name: sefer
Database User Name: sefer
Database User Password: la7CdYFwa9uxwnozk7ok
## WordPress
Admin E-Mail: admin@sefer.click
Admin User Name: admin
Admin Password: F12WeBpJLY4z1qHsFqMt
Admin Url: https://sefer.click/wp-admin/
ssh password is malDEV@2101mehmet
giza hostinger kvm2 pass gizaDEV@2101
contabo cloud panel new
Site
---
IP Address: 100.42.191.131
Domain Name: https://seferalexandria.site
Site User: seferalexandria
Password: x91LgGr2Q8IervoVgcgc
## Database
Host: 127.0.0.1
Port: 3306
Database Name: seferalexandria
Database User Name: seferalexandria
Database User Password: 812UvStGfCfNLMCsRR9a
## WordPress
Admin E-Mail: admin@seferalexandria.site
Admin User Name: admin
Admin Password: N9gv90TdnoOdjVch5V3J
Admin Url: https://seferalexandria.site/wp-admin/
##### alexandria
86IU5xU2HSiNNSAU5cwF username db ==>> alexandriadbUsername vps 2 100.42.191.131
- JCndq5xXLnoYOTuRqnZA for ssh alexandria ssh user
seferalexandria userAdmin cloudPanel 49prvH5MGGupjWrDPLGm
# cloudpanel username is sefercairo and pass is malDEV@2101
#####
oMnEK3IbvCbQ5G5FfK9W username db ==>> seferdbUsername vps 3 185.209.230.169 # db name is sefercairodb
H6JIiEOpyDVoMBBi5cCH sefercairoadmin
Q6MikBy4ktZn9zumyPli sefercairo ssh user 85.209.230.169
# cloudpanel username is sefercairo and pass is malDEV@2101
##### wallet
qG6Bn1P9IRvwk0tLW85v username db ==>> walletdbUsername vps 2 156.67.82.188 # db name is seferPaymentDB
- JCndq5xXLnoYOTuRqnZA for ssh wallet ssh user
seferwallet userAdmin cloudPanel 49prvH5MGGupjWrDPLGm
# cloudpanel username is seferpayment and pass is dKsmZkbdWP9hj13qjNiY and seferpayment@sefer.live
#####
##### giza
TE6VUrMcjnIsipqP9yQj username db ==>> gizaUsername vps 1 31.220.94.107 db name is sefergizaDB
- rylDg624ifiDXsWmaMST for ssh sefergizacp ssh user
# cloudpanel username is sefergiza and pass is 4O2IUSbwZxVnMJYaRTog gizasefer.online
####
#AaPOFHEwHVyXG6AgZ7i password test kvm1
4zB9qoYfxCn7uHx7i5cgUl7JR password contabo vps 3 alexandria
SLqWj2QTD66Gr password contabo vps 1 payment
uREd8QKKzpHXGL25UVi3quK password contabo vps 2 cairo sefer.click user cloud panel is
uREd8QKKzpHXGL25UVi3quK password contabo vps 1 payment seferpw.website user cloud panel is seferpayment
C3vGlIV7VM0priWXgdzc password contabo vps 2 giza seferpw.website user cloud panel is seferpayment
==================================================================
Congratulations! Installed successfully!
==================================================================
webmin Internal Address: https://31.220.94.106:10000/
username: seferpayment
password: d7b064c3
Warning:
If you cannot access the panel,
release the following port (32368|888|80|443|20|21) in the security group
Database user profile
User:
Password: 38d7a66a0e435
==================================================================

66
lib/models/sql Normal file
View File

@@ -0,0 +1,66 @@
-- to check duplicate CarRegistration
SELECT
`driverID`,
COUNT(*) AS `count`,created_at
FROM
`CarRegistration`
GROUP BY
`driverID`
HAVING
COUNT(*) > 1;
--
-- to delete duplicate
WITH CTE AS (
SELECT
MIN(`id`) AS `min_id`
FROM
`CarRegistration`
GROUP BY
`driverID`
)
DELETE FROM
`CarRegistration`
WHERE
`id` NOT IN (SELECT `min_id` FROM CTE);
-- get for employee
SELECT
d.`maritalStatus` AS NAME,
COUNT(*) AS `count`
FROM
`driver` d
WHERE
d.`maritalStatus` IN('Maryam', 'Salma', 'Mena') AND DATE(d.created_at) = CURDATE()
GROUP BY
d.`maritalStatus`
ORDER BY
COUNT
DESC
-- get driver without cars
SELECT
d.id, d.phone
FROM
`driver` d
WHERE
d.id NOT IN (SELECT driverID FROM CarRegistration);
-- car without drivers
SELECT
cr.created_at, cr.driverID
FROM
`CarRegistration` cr
WHERE
cr.driverID NOT IN (SELECT id FROM driver);
----- driver
SELECT phone,email,name_arabic,national_number FROM `driver` WHERE national_number ='29209290106392'
ORDER BY `driver`.`created_at` DESC

View File

@@ -8,6 +8,7 @@ import 'package:service/views/widgets/my_dialog.dart';
import 'package:service/views/widgets/my_textField.dart'; import 'package:service/views/widgets/my_textField.dart';
import '../../constant/style.dart'; import '../../constant/style.dart';
import '../../controller/mainController/pages/add_car.dart';
import '../../controller/mainController/pages/drivers_cant_register.dart'; import '../../controller/mainController/pages/drivers_cant_register.dart';
import '../../controller/mainController/pages/welcome_call.dart'; import '../../controller/mainController/pages/welcome_call.dart';
import '../widgets/my_scafold.dart'; import '../widgets/my_scafold.dart';
@@ -134,11 +135,30 @@ class Main extends StatelessWidget {
const SizedBox( const SizedBox(
height: 20, height: 20,
), ),
InkWell(
onTap: () async {
await mainController.getdriverWithoutCar();
if (mainController.driverWithoutCar.isNotEmpty) {
Get.to(() => const AddCar());
}
},
child: Container(
decoration: AppStyle.boxDecoration,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
'Add car'.tr,
style: AppStyle.title,
textAlign: TextAlign.center,
),
),
),
),
InkWell( InkWell(
onTap: () async { onTap: () async {
await mainController.getCarPlateNotEdit(); await mainController.getCarPlateNotEdit();
if (mainController.carPlateNotEdit.isNotEmpty) { if (mainController.carPlateNotEdit.isNotEmpty) {
Get.to(() => EditCarPlate()); Get.to(() => const EditCarPlate());
} }
}, },
child: Container( child: Container(
@@ -160,7 +180,7 @@ class Main extends StatelessWidget {
onTap: () async { onTap: () async {
// await mainController.getCarPlateNotEdit(); // await mainController.getCarPlateNotEdit();
// if (mainController.carPlateNotEdit.isNotEmpty) { // if (mainController.carPlateNotEdit.isNotEmpty) {
Get.to(() => Complaint()); Get.to(() => const Complaint());
// } // }
}, },
child: Container( child: Container(

View File

@@ -5,26 +5,31 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: _fe_analyzer_shared name: _fe_analyzer_shared
sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "67.0.0" version: "72.0.0"
_flutterfire_internals: _flutterfire_internals:
dependency: transitive dependency: transitive
description: description:
name: _flutterfire_internals name: _flutterfire_internals
sha256: b46f62516902afb04befa4b30eb6a12ac1f58ca8cb25fb9d632407259555dd3d sha256: "9371d13b8ee442e3bfc08a24e3a1b3742c839abbfaf5eef11b79c4b862c89bf7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.39" version: "1.3.41"
_macros:
dependency: transitive
description: dart
source: sdk
version: "0.3.2"
analyzer: analyzer:
dependency: transitive dependency: transitive
description: description:
name: analyzer name: analyzer
sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.4.1" version: "6.7.0"
archive: archive:
dependency: transitive dependency: transitive
description: description:
@@ -93,18 +98,18 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: build_runner name: build_runner
sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7" sha256: dd09dd4e2b078992f42aac7f1a622f01882a8492fef08486b27ddde929c19f04
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.11" version: "2.4.12"
build_runner_core: build_runner_core:
dependency: transitive dependency: transitive
description: description:
name: build_runner_core name: build_runner_core
sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.3.1" version: "7.3.2"
built_collection: built_collection:
dependency: transitive dependency: transitive
description: description:
@@ -181,18 +186,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: cross_file name: cross_file
sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.3.4+1" version: "0.3.4+2"
crypto: crypto:
dependency: "direct main" dependency: "direct main"
description: description:
name: crypto name: crypto
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.3" version: "3.0.5"
cupertino_icons: cupertino_icons:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -205,26 +210,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: dart_style name: dart_style
sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.3.6" version: "2.3.7"
device_info_plus: device_info_plus:
dependency: transitive dependency: transitive
description: description:
name: device_info_plus name: device_info_plus
sha256: eead12d1a1ed83d8283ab4c2f3fca23ac4082f29f25f29dff0f758f57d06ec91 sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.1.0" version: "10.1.2"
device_info_plus_platform_interface: device_info_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: device_info_plus_platform_interface name: device_info_plus_platform_interface
sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.0.0" version: "7.0.1"
envied: envied:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -261,10 +266,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: ffi name: ffi
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.2" version: "2.1.3"
file: file:
dependency: transitive dependency: transitive
description: description:
@@ -301,82 +306,82 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: file_selector_windows name: file_selector_windows
sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 sha256: "2ad726953f6e8affbc4df8dc78b77c3b4a060967a291e528ef72ae846c60fb69"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.9.3+1" version: "0.9.3+2"
firebase_auth: firebase_auth:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_auth name: firebase_auth
sha256: a41b56878fa6aef3ea52962329b47eee333672d4b0ecc406e071b9fc729f242c sha256: "6f5792bdc208416bfdfbfe3363b78ce01667b6ebc4c5cb47cfa891f2fca45ab7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.1.2" version: "5.2.0"
firebase_auth_platform_interface: firebase_auth_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_auth_platform_interface name: firebase_auth_platform_interface
sha256: d1c68097588f3b75ef79a22102ff96c311735c254353bccf6824d19f1a7e86b9 sha256: "80237bb8a92bb0a5e3b40de1c8dbc80254e49ac9e3907b4b47b8e95ac3dd3fad"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.4.2" version: "7.4.4"
firebase_auth_web: firebase_auth_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_auth_web name: firebase_auth_web
sha256: e66ec0ae5697ee39ccd4865d6887cb0df220dd4ea0b21404910c68ca4c1a731a sha256: "9d315491a6be65ea83511cb0e078544a309c39dd54c0ee355c51dbd6d8c03cc8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.12.4" version: "5.12.6"
firebase_core: firebase_core:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_core name: firebase_core
sha256: "5159984ce9b70727473eb388394650677c02c925aaa6c9439905e1f30966a4d5" sha256: "06537da27db981947fa535bb91ca120b4e9cb59cb87278dbdde718558cafc9ff"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.2.0" version: "3.4.0"
firebase_core_platform_interface: firebase_core_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_platform_interface name: firebase_core_platform_interface
sha256: "1003a5a03a61fc9a22ef49f37cbcb9e46c86313a7b2e7029b9390cf8c6fc32cb" sha256: f7d7180c7f99babd4b4c517754d41a09a4943a0f7a69b65c894ca5c68ba66315
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.1.0" version: "5.2.1"
firebase_core_web: firebase_core_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_web name: firebase_core_web
sha256: "23509cb3cddfb3c910c143279ac3f07f06d3120f7d835e4a5d4b42558e978712" sha256: "362e52457ed2b7b180964769c1e04d1e0ea0259fdf7025fdfedd019d4ae2bd88"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.17.3" version: "2.17.5"
firebase_messaging: firebase_messaging:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_messaging name: firebase_messaging
sha256: "156c4292aa63a6a7d508c68ded984cb38730d2823c3265e573cb1e94983e2025" sha256: "29941ba5a3204d80656c0e52103369aa9a53edfd9ceae05a2bb3376f24fda453"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "15.0.3" version: "15.1.0"
firebase_messaging_platform_interface: firebase_messaging_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_platform_interface name: firebase_messaging_platform_interface
sha256: "10408c5ca242b7fc632dd5eab4caf8fdf18ebe88db6052980fa71a18d88bd200" sha256: "26c5370d3a79b15c8032724a68a4741e28f63e1f1a45699c4f0a8ae740aadd72"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.5.41" version: "4.5.43"
firebase_messaging_web: firebase_messaging_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_web name: firebase_messaging_web
sha256: c7a756e3750679407948de665735e69a368cb902940466e5d68a00ea7aba1aaa sha256: "58276cd5d9e22a9320ef9e5bc358628920f770f93c91221f8b638e8346ed5df4"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.8.11" version: "3.8.13"
fixnum: fixnum:
dependency: transitive dependency: transitive
description: description:
@@ -458,10 +463,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: flutter_plugin_android_lifecycle name: flutter_plugin_android_lifecycle
sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e sha256: "9ee02950848f61c4129af3d6ec84a1cfc0e47931abc746b03e7a3bc3e8ff6eda"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.20" version: "2.0.22"
flutter_secure_storage: flutter_secure_storage:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -556,10 +561,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: google_identity_services_web name: google_identity_services_web
sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" sha256: "5be191523702ba8d7a01ca97c17fca096822ccf246b0a9f11923a6ded06199b6"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.3.1+1" version: "0.3.1+4"
google_sign_in: google_sign_in:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -572,18 +577,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: google_sign_in_android name: google_sign_in_android
sha256: d30fb34b659679ea74397e9748b4ab5d720720d57dcc79538f1b3c4a68654cb3 sha256: "0608de03fc541ece4f91ba3e01a68b17cce7a6cf42bd59e40bbe5c55cc3a49d8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.1.27" version: "6.1.30"
google_sign_in_ios: google_sign_in_ios:
dependency: transitive dependency: transitive
description: description:
name: google_sign_in_ios name: google_sign_in_ios
sha256: a058c9880be456f21e2e8571c1126eaacd570bdc5b6c6d9d15aea4bdf22ca9fe sha256: "4898410f55440049e1ba8f15411612d9f89299d89c61cd9baf7e02d56ff81ac7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.7.6" version: "5.7.7"
google_sign_in_platform_interface: google_sign_in_platform_interface:
dependency: transitive dependency: transitive
description: description:
@@ -596,10 +601,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: google_sign_in_web name: google_sign_in_web
sha256: d606264c7a1a526a3aa79d938b85a601d8589731a478bd4a3dcbdeb14a572228 sha256: "042805a21127a85b0dc46bba98a37926f17d2439720e8a459d27045d8ef68055"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.12.4+1" version: "0.12.4+2"
graphs: graphs:
dependency: transitive dependency: transitive
description: description:
@@ -676,18 +681,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: image_picker_android name: image_picker_android
sha256: cea2bd5b9fcff039a4901d3b13c67fe747f940be9ba76bde1bcd218d168eeb7f sha256: c0a6763d50b354793d0192afd0a12560b823147d3ded7c6b77daf658fa05cc85
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.12+6" version: "0.8.12+13"
image_picker_for_web: image_picker_for_web:
dependency: transitive dependency: transitive
description: description:
name: image_picker_for_web name: image_picker_for_web
sha256: "5d6eb13048cd47b60dbf1a5495424dea226c5faf3950e20bf8120a58efb5b5f3" sha256: "65d94623e15372c5c51bebbcb820848d7bcb323836e12dfdba60b5d3a8b39e50"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.4" version: "3.0.5"
image_picker_ios: image_picker_ios:
dependency: transitive dependency: transitive
description: description:
@@ -764,18 +769,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.4" version: "10.0.5"
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: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.3" version: "3.0.5"
leak_tracker_testing: leak_tracker_testing:
dependency: transitive dependency: transitive
description: description:
@@ -800,6 +805,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
macros:
dependency: transitive
description:
name: macros
sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
url: "https://pub.dev"
source: hosted
version: "0.1.2-main.4"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
@@ -812,26 +825,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: material_color_utilities name: material_color_utilities
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.0" version: "0.11.1"
meta: meta:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.12.0" version: "1.15.0"
mime: mime:
dependency: transitive dependency: transitive
description: description:
name: mime name: mime
sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.5" version: "1.0.6"
package_config: package_config:
dependency: transitive dependency: transitive
description: description:
@@ -852,18 +865,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: path_provider name: path_provider
sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.3" version: "2.1.4"
path_provider_android: path_provider_android:
dependency: transitive dependency: transitive
description: description:
name: path_provider_android name: path_provider_android
sha256: "30c5aa827a6ae95ce2853cdc5fe3971daaac00f6f081c419c013f7f57bff2f5e" sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.7" version: "2.2.10"
path_provider_foundation: path_provider_foundation:
dependency: transitive dependency: transitive
description: description:
@@ -1016,10 +1029,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: sqflite_common name: sqflite_common
sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4" sha256: "7b41b6c3507854a159e24ae90a8e3e9cc01eb26a477c118d6dca065b5f55453e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.4" version: "2.5.4+2"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
@@ -1056,10 +1069,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: synchronized name: synchronized
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" sha256: a824e842b8a054f91a728b783c177c1e4731f6b124f9192468457a8913371255
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.0+1" version: "3.2.0"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:
@@ -1072,10 +1085,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.0" version: "0.7.2"
timing: timing:
dependency: transitive dependency: transitive
description: description:
@@ -1104,10 +1117,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_android name: url_launcher_android
sha256: "95d8027db36a0e52caf55680f91e33ea6aa12a3ce608c90b06f4e429a21067ac" sha256: e35a698ac302dd68e41f73250bd9517fe3ab5fa4f18fe4647a0872db61bacbab
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.3.5" version: "6.3.10"
url_launcher_ios: url_launcher_ios:
dependency: transitive dependency: transitive
description: description:
@@ -1120,10 +1133,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_linux name: url_launcher_linux
sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.1" version: "3.2.0"
url_launcher_macos: url_launcher_macos:
dependency: transitive dependency: transitive
description: description:
@@ -1144,18 +1157,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_web name: url_launcher_web
sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.3.1" version: "2.3.3"
url_launcher_windows: url_launcher_windows:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_windows name: url_launcher_windows
sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.1" version: "3.1.2"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
@@ -1184,10 +1197,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vm_service name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "14.2.1" version: "14.2.5"
watcher: watcher:
dependency: transitive dependency: transitive
description: description:
@@ -1224,18 +1237,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: win32 name: win32
sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.5.1" version: "5.5.4"
win32_registry: win32_registry:
dependency: transitive dependency: transitive
description: description:
name: win32_registry name: win32_registry
sha256: "10589e0d7f4e053f2c61023a31c9ce01146656a70b7b7f0828c0b46d7da2a9bb" sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.3" version: "1.1.5"
xdg_directories: xdg_directories:
dependency: transitive dependency: transitive
description: description:
@@ -1261,5 +1274,5 @@ packages:
source: hosted source: hosted
version: "3.1.2" version: "3.1.2"
sdks: sdks:
dart: ">=3.4.3 <4.0.0" dart: ">=3.5.0 <4.0.0"
flutter: ">=3.22.0" flutter: ">=3.24.0"

View File

@@ -100,7 +100,7 @@ flutter_launcher_icons:
# To add assets to your application, add an assets section, like this: # To add assets to your application, add an assets section, like this:
assets: assets:
- assets/ - assets/images
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware # https://flutter.dev/assets-and-images/#resolution-aware