Compare commits
17 Commits
e5aaf103da
...
6d02fed861
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6d02fed861 | ||
|
|
24382bcb13 | ||
|
|
bb041cd950 | ||
|
|
58a5924409 | ||
|
|
b689450d13 | ||
|
|
23ceeed933 | ||
|
|
ce55da045f | ||
|
|
6194bc3243 | ||
|
|
9414370f8b | ||
|
|
14a5e75db5 | ||
|
|
0c41162fd0 | ||
|
|
376fb1002c | ||
|
|
481eeaaee7 | ||
|
|
0de5e3eebc | ||
|
|
285f9f1d81 | ||
|
|
9a6031b0bf | ||
|
|
a5fd8a994e |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 10 KiB |
BIN
assets/images/Vector.jpg
Normal file
|
After Width: | Height: | Size: 259 KiB |
|
Before Width: | Height: | Size: 28 KiB |
1
assets/images/invest_screen/svg/google_pay.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path fill="#FFC107" d="M43.611,20.083H42V20H24v8h11.303c-1.649,4.657-6.08,8-11.303,8c-6.627,0-12-5.373-12-12c0-6.627,5.373-12,12-12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657C34.046,6.053,29.268,4,24,4C12.955,4,4,12.955,4,24c0,11.045,8.955,20,20,20c11.045,0,20-8.955,20-20C44,22.659,43.862,21.35,43.611,20.083z"/><path fill="#FF3D00" d="M6.306,14.691l6.571,4.819C14.655,15.108,18.961,12,24,12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657C34.046,6.053,29.268,4,24,4C16.318,4,9.656,8.337,6.306,14.691z"/><path fill="#4CAF50" d="M24,44c5.166,0,9.86-1.977,13.409-5.192l-6.19-5.238C29.211,35.091,26.715,36,24,36c-5.202,0-9.619-3.317-11.283-7.946l-6.522,5.025C9.505,39.556,16.227,44,24,44z"/><path fill="#1976D2" d="M43.611,20.083H42V20H24v8h11.303c-0.792,2.237-2.231,4.166-4.087,5.571c0.001-0.001,0.002-0.001,0.003-0.002l6.19,5.238C36.971,39.205,44,34,44,24C44,22.659,43.862,21.35,43.611,20.083z"/></svg>
|
||||
|
After Width: | Height: | Size: 988 B |
@@ -223,10 +223,10 @@
|
||||
"choosePaymentMethodText": "اختر طريقة الدفع",
|
||||
"balanceText": "الرصيد",
|
||||
"applePayText": "Apple Pay",
|
||||
"gPayText": "Gpay Pay",
|
||||
"gPayText": "جوجل الدفع",
|
||||
"bankTransferText": "حول الأموال مباشرة من حسابك المصرفي إلى محفظة تانامي الخاصة بك.",
|
||||
"instantTransferFundsApplePayText": "تحويل فوري للأموال باستخدام Apple Pay!",
|
||||
"instantTransferFundsGpayPayText": "تحويل فوري للأموال باستخدام Gpay Pay!",
|
||||
"instantTransferFundsGpayPayText": "تحويل فوري للأموال باستخدام Google Pay!",
|
||||
"retailInvestirCanInvestMaxText": "يمكن للمستثمرين التجزئة استثمار حد أقصى قدره 200,000 ريال سعودي في هذه الفرصة.",
|
||||
"upgradeYourInvestorStatusToIncreaseText": "قم بترقية حالة المستثمر الخاصة بك لزيادة حد الاستثمار الخاص بك.",
|
||||
"currentExchangeText": "سعر الصرف الحالي",
|
||||
@@ -327,7 +327,8 @@
|
||||
"securityDesc5": "لدينا فريق دعم عملاء مخصص لمساعدتك. يمكنك الاتصال بنا من خلال قسم الاتصال داخل التطبيق، أو عبر البريد الإلكتروني، أو الهاتف. نسعى لتقديم دعم سريع ومفيد لمعالجة أي أسئلة أو مخاوف قد تكون لديك.",
|
||||
"websiteText" : "موقع إلكتروني",
|
||||
"toRestorePasswordYouWillBeLoggedOut" : "لاستعادة كلمة المرور، سيتم تسجيل خروجك من التطبيق",
|
||||
"noDataAvailable" : "لا تتوافر بيانات"
|
||||
"noDataAvailable" : "لا تتوافر بيانات",
|
||||
"payWithGpayText": "ادفع باستخدام Google Pay"
|
||||
|
||||
}
|
||||
|
||||
@@ -139,6 +139,7 @@
|
||||
"next": "Next",
|
||||
"depositNoti": "Create deposit notification",
|
||||
"payWithAppleText": "Pay with Apple Pay",
|
||||
"payWithGpayText": "Pay with Google Pay",
|
||||
"submit": "Submit request",
|
||||
"Submit": "Submit",
|
||||
"submitDeposit": "Submit deposit",
|
||||
@@ -223,10 +224,10 @@
|
||||
"choosePaymentMethodText": "Choose payment method",
|
||||
"balanceText": "Balance",
|
||||
"applePayText": "Apple Pay",
|
||||
"gPayText": "Gpay Pay",
|
||||
"gPayText": "Google Pay",
|
||||
"bankTransferText": "Directly transfer funds from your bank account into your Tanami wallet.",
|
||||
"instantTransferFundsApplePayText": "Instant transfer of funds using Apple Pay!",
|
||||
"instantTransferFundsGpayPayText": "Instant transfer of funds using Gpay Pay!",
|
||||
"instantTransferFundsGpayPayText": "Instant transfer of funds using Google Pay!",
|
||||
"retailInvestirCanInvestMaxText": "Retail investors can invest a maximum of SAR 200,000 in this opportunity.",
|
||||
"upgradeYourInvestorStatusToIncreaseText": "Upgrade your investor status to increase your investment limit.",
|
||||
"currentExchangeText": "Current Exchange",
|
||||
|
||||
37
assets/payment/google_pay_config.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"provider": "google_pay",
|
||||
"data": {
|
||||
"environment": "TEST",
|
||||
"apiVersion": 2,
|
||||
"apiVersionMinor": 0,
|
||||
"allowedPaymentMethods": [
|
||||
{
|
||||
"type": "CARD",
|
||||
"tokenizationSpecification": {
|
||||
"type": "PAYMENT_GATEWAY",
|
||||
"parameters": {
|
||||
"gateway": "example",
|
||||
"gatewayMerchantId": "gatewayMerchantId"
|
||||
}
|
||||
},
|
||||
"parameters": {
|
||||
"allowedCardNetworks": ["VISA", "MASTERCARD"],
|
||||
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
|
||||
"billingAddressRequired": true,
|
||||
"billingAddressParameters": {
|
||||
"format": "FULL",
|
||||
"phoneNumberRequired": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"merchantInfo": {
|
||||
"merchantId": "01234567890123456789",
|
||||
"merchantName": "Example Merchant Name"
|
||||
},
|
||||
"transactionInfo": {
|
||||
"countryCode": "US",
|
||||
"currencyCode": "USD"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
# Uncomment this line to define a global platform for your project
|
||||
# platform :ios, '12.0'
|
||||
platform :ios, '13.0'
|
||||
|
||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
||||
@@ -30,11 +30,10 @@ flutter_ios_podfile_setup
|
||||
target 'Runner' do
|
||||
use_frameworks!
|
||||
use_modular_headers!
|
||||
|
||||
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
||||
target 'RunnerTests' do
|
||||
inherit! :search_paths
|
||||
end
|
||||
# target 'RunnerTests' do
|
||||
# inherit! :search_paths
|
||||
# end
|
||||
end
|
||||
|
||||
post_install do |installer|
|
||||
|
||||
146
ios/Podfile.lock
Normal file
@@ -0,0 +1,146 @@
|
||||
PODS:
|
||||
- connectivity_plus (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- device_info_plus (0.0.1):
|
||||
- Flutter
|
||||
- Firebase/CoreOnly (10.25.0):
|
||||
- FirebaseCore (= 10.25.0)
|
||||
- firebase_core (2.32.0):
|
||||
- Firebase/CoreOnly (= 10.25.0)
|
||||
- Flutter
|
||||
- FirebaseCore (10.25.0):
|
||||
- FirebaseCoreInternal (~> 10.0)
|
||||
- GoogleUtilities/Environment (~> 7.12)
|
||||
- GoogleUtilities/Logger (~> 7.12)
|
||||
- FirebaseCoreInternal (10.29.0):
|
||||
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
||||
- Flutter (1.0.0)
|
||||
- flutter_jailbreak_detection (1.0.0):
|
||||
- Flutter
|
||||
- IOSSecuritySuite
|
||||
- flutter_localization (0.0.1):
|
||||
- Flutter
|
||||
- flutter_secure_storage (6.0.0):
|
||||
- Flutter
|
||||
- GoogleUtilities/Environment (7.13.3):
|
||||
- GoogleUtilities/Privacy
|
||||
- PromisesObjC (< 3.0, >= 1.2)
|
||||
- GoogleUtilities/Logger (7.13.3):
|
||||
- GoogleUtilities/Environment
|
||||
- GoogleUtilities/Privacy
|
||||
- "GoogleUtilities/NSData+zlib (7.13.3)":
|
||||
- GoogleUtilities/Privacy
|
||||
- GoogleUtilities/Privacy (7.13.3)
|
||||
- IOSSecuritySuite (2.1.0)
|
||||
- local_auth_darwin (0.0.1):
|
||||
- Flutter
|
||||
- package_info_plus (0.4.5):
|
||||
- Flutter
|
||||
- path_provider_foundation (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- permission_handler_apple (9.3.0):
|
||||
- Flutter
|
||||
- PromisesObjC (2.4.0)
|
||||
- secure_application (0.0.1):
|
||||
- Flutter
|
||||
- shared_preferences_foundation (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- sms_autofill (0.0.1):
|
||||
- Flutter
|
||||
- sqflite (0.0.3):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- url_launcher_ios (0.0.1):
|
||||
- Flutter
|
||||
|
||||
DEPENDENCIES:
|
||||
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`)
|
||||
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
||||
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
||||
- Flutter (from `Flutter`)
|
||||
- flutter_jailbreak_detection (from `.symlinks/plugins/flutter_jailbreak_detection/ios`)
|
||||
- flutter_localization (from `.symlinks/plugins/flutter_localization/ios`)
|
||||
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
|
||||
- local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`)
|
||||
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
||||
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
||||
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
||||
- secure_application (from `.symlinks/plugins/secure_application/ios`)
|
||||
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
|
||||
- sms_autofill (from `.symlinks/plugins/sms_autofill/ios`)
|
||||
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
|
||||
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- Firebase
|
||||
- FirebaseCore
|
||||
- FirebaseCoreInternal
|
||||
- GoogleUtilities
|
||||
- IOSSecuritySuite
|
||||
- PromisesObjC
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
connectivity_plus:
|
||||
:path: ".symlinks/plugins/connectivity_plus/darwin"
|
||||
device_info_plus:
|
||||
:path: ".symlinks/plugins/device_info_plus/ios"
|
||||
firebase_core:
|
||||
:path: ".symlinks/plugins/firebase_core/ios"
|
||||
Flutter:
|
||||
:path: Flutter
|
||||
flutter_jailbreak_detection:
|
||||
:path: ".symlinks/plugins/flutter_jailbreak_detection/ios"
|
||||
flutter_localization:
|
||||
:path: ".symlinks/plugins/flutter_localization/ios"
|
||||
flutter_secure_storage:
|
||||
:path: ".symlinks/plugins/flutter_secure_storage/ios"
|
||||
local_auth_darwin:
|
||||
:path: ".symlinks/plugins/local_auth_darwin/darwin"
|
||||
package_info_plus:
|
||||
:path: ".symlinks/plugins/package_info_plus/ios"
|
||||
path_provider_foundation:
|
||||
:path: ".symlinks/plugins/path_provider_foundation/darwin"
|
||||
permission_handler_apple:
|
||||
:path: ".symlinks/plugins/permission_handler_apple/ios"
|
||||
secure_application:
|
||||
:path: ".symlinks/plugins/secure_application/ios"
|
||||
shared_preferences_foundation:
|
||||
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
|
||||
sms_autofill:
|
||||
:path: ".symlinks/plugins/sms_autofill/ios"
|
||||
sqflite:
|
||||
:path: ".symlinks/plugins/sqflite/darwin"
|
||||
url_launcher_ios:
|
||||
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db
|
||||
device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
|
||||
Firebase: 0312a2352584f782ea56f66d91606891d4607f06
|
||||
firebase_core: a626d00494efa398e7c54f25f1454a64c8abf197
|
||||
FirebaseCore: 7ec4d0484817f12c3373955bc87762d96842d483
|
||||
FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934
|
||||
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
||||
flutter_jailbreak_detection: c5bf66ff6c0c4230769b6ba0bd63eb6ac4148a76
|
||||
flutter_localization: f43b18844a2b3d2c71fd64f04ffd6b1e64dd54d4
|
||||
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
|
||||
GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
|
||||
IOSSecuritySuite: 45e8531b05ffa72b5661cbdb5b5b5648a8de1a84
|
||||
local_auth_darwin: 4d56c90c2683319835a61274b57620df9c4520ab
|
||||
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
|
||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||
secure_application: 27d424e8c2e770f63e38e280b5a51f921aa9b0c8
|
||||
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||
sms_autofill: c461043483362c3f1709ee76eaae6eb570b31686
|
||||
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
||||
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
||||
|
||||
PODFILE CHECKSUM: 43a9c63a5ae3ced395468a38a1d1f52a168ba9f5
|
||||
|
||||
COCOAPODS: 1.15.2
|
||||
@@ -7,6 +7,7 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
086333DCEBE30744A8B72799 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EEDFFE82DF84F0A9977AFF8 /* Pods_Runner.framework */; };
|
||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
||||
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
|
||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||
@@ -40,14 +41,18 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0CE95444FD6E656EA60BAB64 /* 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>"; };
|
||||
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>"; };
|
||||
182DD8010AE0B1F861314BE9 /* 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>"; };
|
||||
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; };
|
||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||
4EEDFFE82DF84F0A9977AFF8 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
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>"; };
|
||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||
884C9A80C1736AD2EB38D444 /* 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>"; };
|
||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
|
||||
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
|
||||
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@@ -62,6 +67,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
086333DCEBE30744A8B72799 /* Pods_Runner.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -76,6 +82,16 @@
|
||||
path = RunnerTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3C47D009CCFEBBCC155D80D9 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
884C9A80C1736AD2EB38D444 /* Pods-Runner.debug.xcconfig */,
|
||||
0CE95444FD6E656EA60BAB64 /* Pods-Runner.release.xcconfig */,
|
||||
182DD8010AE0B1F861314BE9 /* Pods-Runner.profile.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9740EEB11CF90186004384FC /* Flutter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -94,6 +110,8 @@
|
||||
97C146F01CF9000F007C117D /* Runner */,
|
||||
97C146EF1CF9000F007C117D /* Products */,
|
||||
331C8082294A63A400263BE5 /* RunnerTests */,
|
||||
3C47D009CCFEBBCC155D80D9 /* Pods */,
|
||||
9CDE7EA15007B060D5AF313C /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -121,6 +139,14 @@
|
||||
path = Runner;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9CDE7EA15007B060D5AF313C /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EEDFFE82DF84F0A9977AFF8 /* Pods_Runner.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@@ -145,12 +171,15 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||
buildPhases = (
|
||||
AFB70CB9889F1047B6B2F5A5 /* [CP] Check Pods Manifest.lock */,
|
||||
9740EEB61CF901F6004384FC /* Run Script */,
|
||||
97C146EA1CF9000F007C117D /* Sources */,
|
||||
97C146EB1CF9000F007C117D /* Frameworks */,
|
||||
97C146EC1CF9000F007C117D /* Resources */,
|
||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||
51B0BF3A5629B47C8A34FE1F /* [CP] Embed Pods Frameworks */,
|
||||
A7D67757570BD1DB843A9A8F /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -238,6 +267,23 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
||||
};
|
||||
51B0BF3A5629B47C8A34FE1F /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
9740EEB61CF901F6004384FC /* Run Script */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
alwaysOutOfDate = 1;
|
||||
@@ -253,6 +299,45 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||
};
|
||||
A7D67757570BD1DB843A9A8F /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
AFB70CB9889F1047B6B2F5A5 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
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";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
@@ -361,17 +446,29 @@
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = A89AY6VY4F;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = Tanami;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.tanamiApp;
|
||||
MARKETING_VERSION = 1;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.wdi.tanami;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Profile;
|
||||
@@ -386,9 +483,14 @@
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.tanamiApp.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||
};
|
||||
name = Debug;
|
||||
@@ -403,7 +505,12 @@
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.tanamiApp.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||
};
|
||||
name = Release;
|
||||
@@ -418,7 +525,12 @@
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.tanamiApp.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||
};
|
||||
name = Profile;
|
||||
@@ -540,18 +652,30 @@
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = A89AY6VY4F;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = Tanami;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.tanamiApp;
|
||||
MARKETING_VERSION = 1;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.wdi.tanami;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Debug;
|
||||
@@ -562,17 +686,29 @@
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = A89AY6VY4F;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = Tanami;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.tanamiApp;
|
||||
MARKETING_VERSION = 1;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.wdi.tanami;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Release;
|
||||
|
||||
3
ios/Runner.xcworkspace/contents.xcworkspacedata
generated
@@ -4,4 +4,7 @@
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
||||
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 229 KiB |
|
Before Width: | Height: | Size: 695 B After Width: | Height: | Size: 583 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 939 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 12 KiB |
@@ -2,6 +2,8 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
@@ -24,6 +26,8 @@
|
||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>NSFaceIDUsageDescription</key>
|
||||
@@ -43,9 +47,5 @@
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -118,6 +118,8 @@ class AppImages {
|
||||
'assets/images/invest_screen/svg/time_square.svg';
|
||||
static const String applePayIcon =
|
||||
'assets/images/invest_screen/svg/apple_pay.svg';
|
||||
static const String googlePayIcon =
|
||||
'assets/images/invest_screen/svg/google_pay.svg';
|
||||
static const String walletSettingsIcon =
|
||||
'assets/images/settings_screen/svg/wallet_settings.svg';
|
||||
|
||||
|
||||
@@ -252,6 +252,7 @@ class AppText {
|
||||
static const String next = "next";
|
||||
static const String depositNoti = "depositNoti";
|
||||
static const String payWithAppleText = "payWithAppleText";
|
||||
static const String payWithGpayText = "payWithGpayText";
|
||||
static const String submit = "submit";
|
||||
static const String Submit = "Submit";
|
||||
static const String submitDeposit = "submitDeposit";
|
||||
|
||||
@@ -7,4 +7,9 @@ class DeviceInfoData {
|
||||
var dataV = await deviceInfoPlugin.androidInfo;
|
||||
return dataV.id.toString();
|
||||
}
|
||||
|
||||
// Future<String> getIOSDeviceId() async {
|
||||
// var dataV = await deviceInfoPlugin.iosInfo;
|
||||
// return dataV..toString();
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -1,21 +1,19 @@
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||
|
||||
class SecureStorageService {
|
||||
final FlutterSecureStorage _storage = const FlutterSecureStorage(
|
||||
aOptions: AndroidOptions(
|
||||
encryptedSharedPreferences: true,
|
||||
),
|
||||
);
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class SharedPreferenceLocalData {
|
||||
Future<void> write(String key, String value) async {
|
||||
await _storage.write(key: key, value: value);
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
|
||||
await prefs.setString(key, value);
|
||||
}
|
||||
|
||||
Future<String?> read(String key) async {
|
||||
return await _storage.read(key: key);
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
|
||||
return prefs.getString(key);
|
||||
}
|
||||
|
||||
Future<void> delete(String key) async {
|
||||
await _storage.delete(key: key);
|
||||
}
|
||||
// Future<void> delete(String key) async {
|
||||
// await _storage.delete(key: key);
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
// ignore: file_names
|
||||
import 'dart:convert';
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
@@ -6,6 +9,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:gap/gap.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:pay/pay.dart';
|
||||
|
||||
import '../../../../../../core/routes/route_name.dart';
|
||||
import '../../../../../../core/routes/routes.dart';
|
||||
@@ -26,6 +30,13 @@ class DepositLayout extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
const paymentItems = [
|
||||
PaymentItem(
|
||||
label: 'Total',
|
||||
amount: '99.99',
|
||||
status: PaymentItemStatus.final_price,
|
||||
)
|
||||
];
|
||||
var localizations = AppLocalizations.of(context);
|
||||
final depositPaymentBloc = context.read<DepositPaymentBloc>();
|
||||
int selectedIndex = 0;
|
||||
@@ -42,8 +53,12 @@ class DepositLayout extends StatelessWidget {
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
if (state.isFormValid) {
|
||||
if (selectedIndex == 1) {
|
||||
} else if (selectedIndex == 2) {
|
||||
} else {
|
||||
goRouter.pushNamed(RouteName.depositPreview);
|
||||
}
|
||||
}
|
||||
},
|
||||
child: selectedIndex == 1
|
||||
? Container(
|
||||
@@ -81,6 +96,21 @@ class DepositLayout extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
)
|
||||
: selectedIndex == 2
|
||||
? GooglePayButton(
|
||||
paymentConfiguration:
|
||||
PaymentConfiguration.fromJsonString(
|
||||
jsonEncode(JsonAssets.gpayAsset)),
|
||||
paymentItems: paymentItems,
|
||||
type: GooglePayButtonType.pay,
|
||||
margin: const EdgeInsets.only(top: 15.0),
|
||||
onPaymentResult: (paymentResult) {
|
||||
log(paymentResult.toString());
|
||||
},
|
||||
loadingIndicator: const Center(
|
||||
child: CircularProgressIndicator(),
|
||||
),
|
||||
)
|
||||
: Container(
|
||||
margin: const EdgeInsets.all(10.0),
|
||||
height: 65.h,
|
||||
@@ -319,3 +349,9 @@ class DepositLayout extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class JsonAssets {
|
||||
JsonAssets._();
|
||||
|
||||
static const String gpayAsset = 'assets/payment/google_pay_config.json';
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
@@ -108,7 +110,8 @@ class DepositPayMethodSection extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
const Gap(12),
|
||||
GestureDetector(
|
||||
Platform.isIOS
|
||||
? GestureDetector(
|
||||
onTap: () {
|
||||
radioBloc.add(const RadioSelected(1));
|
||||
},
|
||||
@@ -165,7 +168,8 @@ class DepositPayMethodSection extends StatelessWidget {
|
||||
SvgPicture.asset(AppImages.applePayIcon),
|
||||
const Gap(5),
|
||||
TextWidget().text14W700(
|
||||
localizations.translate(AppText.applePayText),
|
||||
localizations
|
||||
.translate(AppText.applePayText),
|
||||
clr: AppColor.textLabelColor),
|
||||
],
|
||||
),
|
||||
@@ -175,8 +179,86 @@ class DepositPayMethodSection extends StatelessWidget {
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(12.0),
|
||||
child: TextWidget().text14W500(
|
||||
localizations
|
||||
.translate(AppText.instantTransferFundsApplePayText),
|
||||
localizations.translate(
|
||||
AppText.instantTransferFundsApplePayText),
|
||||
clr: AppColor.textLabelColor,
|
||||
txtAlign: TextAlign.start,
|
||||
),
|
||||
),
|
||||
const Gap(12),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
: GestureDetector(
|
||||
onTap: () {
|
||||
radioBloc.add(const RadioSelected(2));
|
||||
},
|
||||
child: Container(
|
||||
clipBehavior: Clip.antiAlias,
|
||||
// padding: const EdgeInsets.all(12),
|
||||
decoration: ShapeDecoration(
|
||||
color: Colors.white,
|
||||
shape: RoundedRectangleBorder(
|
||||
side: const BorderSide(color: Color(0xFFD8D8D8)),
|
||||
borderRadius: BorderRadius.circular(22),
|
||||
),
|
||||
shadows: const [
|
||||
BoxShadow(
|
||||
color: Color(0x14000000),
|
||||
blurRadius: 8,
|
||||
offset: Offset(-2, -2),
|
||||
spreadRadius: 0.2,
|
||||
),
|
||||
BoxShadow(
|
||||
color: Color(0x3391978E),
|
||||
blurRadius: 8,
|
||||
offset: Offset(2, 2),
|
||||
spreadRadius: 1,
|
||||
)
|
||||
],
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
padding: const EdgeInsets.all(12),
|
||||
decoration: BoxDecoration(
|
||||
color: selectedIndex == 1
|
||||
? const Color(0xFFE4F5E9)
|
||||
: const Color(0xCCE2E2E2),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Radio<int>(
|
||||
activeColor: AppColor.radioActiveColor,
|
||||
value: 2,
|
||||
groupValue: selectedIndex,
|
||||
onChanged: (int? value) {
|
||||
if (value != null) {
|
||||
radioBloc.add(RadioSelected(value));
|
||||
}
|
||||
},
|
||||
),
|
||||
const Gap(5),
|
||||
SvgPicture.asset(AppImages.googlePayIcon),
|
||||
const Gap(5),
|
||||
TextWidget().text14W700(
|
||||
localizations.translate(AppText.gPayText),
|
||||
clr: AppColor.textLabelColor),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(12.0),
|
||||
child: TextWidget().text14W500(
|
||||
localizations.translate(
|
||||
AppText.instantTransferFundsGpayPayText),
|
||||
clr: AppColor.textLabelColor,
|
||||
txtAlign: TextAlign.start,
|
||||
),
|
||||
|
||||
@@ -13,7 +13,7 @@ import 'biometric_state.dart';
|
||||
|
||||
class BiometricBloc extends Bloc<BiometricEvent, BiometricState> {
|
||||
final LocalAuthentication localAuthentication;
|
||||
final SecureStorageService secureStorageService;
|
||||
final SharedPreferenceLocalData secureStorageService;
|
||||
|
||||
BiometricBloc(this.localAuthentication, this.secureStorageService)
|
||||
: super(BiometricInitial()) {
|
||||
|
||||
@@ -19,7 +19,8 @@ class BiometricLayout extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
String biometricImage = "";
|
||||
if (Platform.isIOS) {
|
||||
biometricImage = AppImages.biometricFace;
|
||||
|
||||
@@ -31,8 +31,8 @@ class ChangePasswordBloc
|
||||
emit(ChangePasswordLoading());
|
||||
try {
|
||||
Map<String, dynamic> dataForm = {
|
||||
"oldPassword": event.currentPassword,
|
||||
"newPassword": event.password,
|
||||
"oldPassword": event.password,
|
||||
"newPassword": event.currentPassword,
|
||||
"confirmNewPassword": event.repeatPassword,
|
||||
};
|
||||
ResponseData response =
|
||||
|
||||
@@ -5,7 +5,6 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:gap/gap.dart';
|
||||
import 'package:tanami_app/core/styles/app_color.dart';
|
||||
import 'package:tanami_app/features/countrySelection/bloc/GetCountry/get_country_bloc.dart';
|
||||
import 'package:tanami_app/features/countrySelection/bloc/GetCountry/get_country_event.dart';
|
||||
import 'package:tanami_app/shared/components/text_widget.dart';
|
||||
|
||||
import '../../../../shared/api/api_endpoints.dart';
|
||||
@@ -34,9 +33,9 @@ class CountrySelectionList extends StatelessWidget {
|
||||
const SnackBar(content: Text("Successfully fetch"));
|
||||
} else if (state is CountryError) {
|
||||
const SnackBar(content: Text("error while fetching data"));
|
||||
Future.delayed(const Duration(milliseconds: 3), () {
|
||||
context.read<GetCountryBlock>().add(GetCountry());
|
||||
});
|
||||
// Future.delayed(const Duration(milliseconds: 3), () {
|
||||
// context.read<GetCountryBlock>().add(GetCountry());
|
||||
// });
|
||||
} else {
|
||||
const SnackBar(content: Text("not fetch"));
|
||||
}
|
||||
@@ -53,6 +52,9 @@ class CountrySelectionList extends StatelessWidget {
|
||||
var country = state.countryModel.data![index];
|
||||
|
||||
return ListTile(
|
||||
onTap: () {
|
||||
radioBloc.add(RadioSelected(index));
|
||||
},
|
||||
title: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
|
||||
@@ -11,7 +11,7 @@ import 'restore_password_phone_verification_state.dart';
|
||||
class RestorePasswordPhoneVerificationBloc extends Bloc<
|
||||
RestorePasswordPhoneVerificationEvent,
|
||||
RestorePasswordPhoneVerificationState> {
|
||||
final SecureStorageService secureStorageService;
|
||||
final SharedPreferenceLocalData secureStorageService;
|
||||
String isdcode = "";
|
||||
|
||||
String countryId = "";
|
||||
@@ -33,16 +33,16 @@ class RestorePasswordPhoneVerificationBloc extends Bloc<
|
||||
emit(RestorePasswordPhoneVerificationLoading());
|
||||
try {
|
||||
Map<String, dynamic> dataForm = {
|
||||
"countryId": event.id,
|
||||
"phoneNumber": event.phoneNumber
|
||||
"ISDcode": event.countryISDCode,
|
||||
"mobileNumber": event.phoneNumber
|
||||
};
|
||||
ResponseData response =
|
||||
await ForgotPasswordApi().forgotPasswordApi(dataForm);
|
||||
|
||||
if (response.status == ResponseStatus.SUCCESS) {
|
||||
var data = response.data["data"];
|
||||
await secureStorageService.write('temp_token', data["token"]);
|
||||
Globalconst.token = data["token"];
|
||||
await secureStorageService.write('temp_token', data);
|
||||
Globalconst.token = data;
|
||||
emit(RestorePasswordPhoneVerificationSuccess());
|
||||
} else {
|
||||
emit(RestorePasswordPhoneVerificationFailure(response.message));
|
||||
|
||||
@@ -12,11 +12,13 @@ class RestorePasswordPhoneVerificationSubmitted
|
||||
final String phoneNumber;
|
||||
final String countryResidence;
|
||||
final String id;
|
||||
final String countryISDCode;
|
||||
|
||||
const RestorePasswordPhoneVerificationSubmitted(
|
||||
this.phoneNumber,
|
||||
this.countryResidence,
|
||||
this.id,
|
||||
this.countryISDCode,
|
||||
);
|
||||
|
||||
@override
|
||||
|
||||
@@ -12,7 +12,8 @@ class RestorePasswordPhoneVerificationScreen extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
final radioBloc = context.read<RadioBloc>();
|
||||
return WillPopScope(
|
||||
onWillPop: () async {
|
||||
|
||||
@@ -80,7 +80,8 @@ class RestorePasswordPhoneVerificationBottomSection extends StatelessWidget {
|
||||
.phoneNumberTextField
|
||||
.text,
|
||||
"",
|
||||
restorePasswordBloc.countryId),
|
||||
restorePasswordBloc.countryId,
|
||||
restorePasswordBloc.isdcode),
|
||||
)
|
||||
: null;
|
||||
},
|
||||
|
||||
@@ -22,7 +22,8 @@ import '../bloc/text_bloc/text_event.dart';
|
||||
Widget bottomSection(BuildContext context) {
|
||||
var localizations = AppLocalizations.of(context);
|
||||
final radioBloc = context.read<ChooseLanguageBloc>();
|
||||
SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
|
||||
@@ -14,7 +14,8 @@ class CountrySelectionList extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
|
||||
final radioBloc = context.read<ChooseLanguageBloc>();
|
||||
_initializeLanguageSelection(radioBloc, secureStorageService);
|
||||
@@ -51,9 +52,9 @@ class CountrySelectionList extends StatelessWidget {
|
||||
}
|
||||
|
||||
void _initializeLanguageSelection(ChooseLanguageBloc radioBloc,
|
||||
SecureStorageService secureStorageService) async {
|
||||
SharedPreferenceLocalData secureStorageService) async {
|
||||
String languageSelected =
|
||||
(await secureStorageService.read("languageSelected")) ?? "";
|
||||
await (secureStorageService.read("languageSelected")) ?? "";
|
||||
|
||||
if (languageSelected.isEmpty) {
|
||||
radioBloc.add(const ChooseLanguageSelected(0));
|
||||
|
||||
@@ -9,7 +9,7 @@ import 'login_event.dart';
|
||||
import 'login_state.dart';
|
||||
|
||||
class LoginBloc extends Bloc<LoginEvent, LoginState> {
|
||||
final SecureStorageService secureStorageService;
|
||||
final SharedPreferenceLocalData secureStorageService;
|
||||
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
|
||||
final TextEditingController countrySelectionTextField =
|
||||
TextEditingController();
|
||||
|
||||
@@ -14,7 +14,8 @@ class LoginScreen extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
final radioBloc = context.read<RadioBloc>();
|
||||
|
||||
return WillPopScope(
|
||||
|
||||
@@ -28,7 +28,8 @@ class BottomSection extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var localizations = AppLocalizations.of(context);
|
||||
SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
final radioBloc = context.read<RadioBloc>();
|
||||
var loginbloc = context.read<LoginBloc>();
|
||||
return Column(
|
||||
|
||||
@@ -10,7 +10,7 @@ import 'otp_event.dart';
|
||||
import 'otp_state.dart';
|
||||
|
||||
class OtpBloc extends Bloc<OtpEvent, OtpState> {
|
||||
final SecureStorageService secureStorageService;
|
||||
final SharedPreferenceLocalData secureStorageService;
|
||||
final TextEditingController otpController = TextEditingController();
|
||||
OtpBloc({required this.secureStorageService}) : super(OtpInitial()) {
|
||||
on<StartListeningForOtp>(_onStartListeningForOtp);
|
||||
|
||||
@@ -20,7 +20,8 @@ class OtpScreen extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
return Scaffold(
|
||||
backgroundColor: AppColor.plainWhite,
|
||||
resizeToAvoidBottomInset: true,
|
||||
|
||||
@@ -24,7 +24,8 @@ class ResendOtpSection extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
String token = "";
|
||||
getToken() async {
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
token = await secureStorageService.read('temp_token') ?? "";
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import 'register_event.dart';
|
||||
import 'register_state.dart';
|
||||
|
||||
class RegisterBloc extends Bloc<RegisterEvent, RegisterState> {
|
||||
final SecureStorageService secureStorageService;
|
||||
final SharedPreferenceLocalData secureStorageService;
|
||||
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
|
||||
final TextEditingController countrySelectionTextField =
|
||||
TextEditingController();
|
||||
|
||||
@@ -8,7 +8,7 @@ import 'register_user_event.dart';
|
||||
import 'register_user_state.dart';
|
||||
|
||||
class RegisterUserBloc extends Bloc<RegisterUserEvent, RegisterUserState> {
|
||||
final SecureStorageService secureStorageService;
|
||||
final SharedPreferenceLocalData secureStorageService;
|
||||
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
|
||||
final TextEditingController firstNameTextField = TextEditingController();
|
||||
final TextEditingController lastNameTextField = TextEditingController();
|
||||
@@ -47,7 +47,7 @@ class RegisterUserBloc extends Bloc<RegisterUserEvent, RegisterUserState> {
|
||||
await RegisterAPIService().RegisterRequest(registerdata);
|
||||
if (response.status == ResponseStatus.SUCCESS) {
|
||||
var data = response.data["data"];
|
||||
secureStorageService.write("temp_token", data["token"].toString());
|
||||
secureStorageService.write("temp_token", data.toString());
|
||||
emit(RegisterUserSuccess());
|
||||
} else {
|
||||
emit(RegisterUserFailure(response.message));
|
||||
|
||||
@@ -12,7 +12,8 @@ class RegisterScreen extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
final radioBloc = context.read<RadioBloc>();
|
||||
return WillPopScope(
|
||||
onWillPop: () async {
|
||||
|
||||
@@ -14,7 +14,8 @@ class RegisterUserDetailsScreen extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
return Scaffold(
|
||||
backgroundColor: AppColor.plainWhite,
|
||||
resizeToAvoidBottomInset: true,
|
||||
|
||||
@@ -33,7 +33,8 @@ class RegisterUserBottomSection extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
String token = "";
|
||||
getToken() async {
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
token = await secureStorageService.read("temp_token") ?? "";
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,7 @@ part 'pin_event.dart';
|
||||
part 'pin_state.dart';
|
||||
|
||||
class PinBloc extends Bloc<PinEvent, PinState> {
|
||||
final SecureStorageService secureStorageService;
|
||||
|
||||
final SharedPreferenceLocalData secureStorageService;
|
||||
PinBloc({required this.secureStorageService})
|
||||
: super(const PinState(
|
||||
pin: '',
|
||||
|
||||
@@ -15,7 +15,8 @@ class ConfirmPinScreen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var localizations = AppLocalizations.of(context);
|
||||
final secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
return Scaffold(
|
||||
backgroundColor: AppColor.plainWhite,
|
||||
appBar: AppBarWidget(
|
||||
|
||||
@@ -17,7 +17,8 @@ class PinScreen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var localizations = AppLocalizations.of(context);
|
||||
final secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
return WillPopScope(
|
||||
onWillPop: () async {
|
||||
if (fromScreen == "login" ||
|
||||
|
||||
@@ -19,7 +19,8 @@ class ConfirmPinKey extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var localizations = AppLocalizations.of(context);
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
return Column(
|
||||
children: [
|
||||
const Gap(20),
|
||||
|
||||
@@ -20,7 +20,8 @@ class SplashScreen extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
|
||||
return Scaffold(
|
||||
backgroundColor: AppColor.plainWhite,
|
||||
|
||||
@@ -63,7 +63,8 @@ class MyApp extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
|
||||
SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
final NetworkConnectivity _networkConnectivity =
|
||||
NetworkConnectivity(onStatusChange: (_) {});
|
||||
String languageSelected = "";
|
||||
|
||||
@@ -9,7 +9,8 @@ import '../../Api_Helper/base_manager.dart';
|
||||
import '../../core/utils/secure/secure_storage_service.dart';
|
||||
|
||||
class NetworkApiService {
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
|
||||
final Dio _dio = Dio(BaseOptions(
|
||||
validateStatus: (status) {
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'package:bloc/bloc.dart';
|
||||
import 'package:tanami_app/core/utils/secure/secure_storage_service.dart';
|
||||
|
||||
import '../../../../Api_Helper/base_manager.dart';
|
||||
import '../../../../core/utils/device_info/device_info_data.dart';
|
||||
import '../../../../features/MainScreens/Settings/domain/repository/settings_api.dart';
|
||||
import '../../../../features/register/Repository/RegisterApi.dart';
|
||||
import 'toggle_event.dart';
|
||||
@@ -13,7 +12,8 @@ import 'toggle_state.dart';
|
||||
class ToggleBloc extends Bloc<ToggleEvent, ToggleState> {
|
||||
final String type;
|
||||
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
|
||||
ToggleBloc(this.type) : super(ToggleInitial()) {
|
||||
on<ToggleSwitch>(_onToggleSwitch);
|
||||
@@ -28,7 +28,7 @@ class ToggleBloc extends Bloc<ToggleEvent, ToggleState> {
|
||||
Map<String, dynamic> biometricdata = {
|
||||
"code": await secureStorageService.read("temp_token"),
|
||||
"is_2FA_on": false,
|
||||
"deviceId": await DeviceInfoData().getDeviceId(),
|
||||
"deviceId": "test-id",
|
||||
"biometric_type": Platform.isIOS ? "face" : "fingerprint"
|
||||
};
|
||||
|
||||
@@ -63,7 +63,7 @@ class ToggleBloc extends Bloc<ToggleEvent, ToggleState> {
|
||||
Map<String, dynamic> biometricdata = {
|
||||
"code": await secureStorageService.read("temp_token"),
|
||||
"is_2FA_on": true,
|
||||
"deviceId": await DeviceInfoData().getDeviceId(),
|
||||
"deviceId": "test-id",
|
||||
"biometric_type": Platform.isIOS ? "face" : "fingerprint"
|
||||
};
|
||||
|
||||
|
||||
@@ -19,7 +19,8 @@ deviceLockedDialog(
|
||||
context,
|
||||
) {
|
||||
var localizations = AppLocalizations.of(context);
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
return showDialog(
|
||||
barrierDismissible: false,
|
||||
context: context,
|
||||
|
||||
@@ -15,7 +15,8 @@ import 'text_widget.dart';
|
||||
|
||||
forgotPasswordlogoutdialog(context) {
|
||||
var localizations = AppLocalizations.of(context);
|
||||
SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
return showDialog(
|
||||
context: context,
|
||||
builder: (context) => Column(
|
||||
|
||||
@@ -168,7 +168,7 @@ class FormLabelTextField extends StatelessWidget {
|
||||
maxlines: type == "description" ? 6 : 1,
|
||||
texttype: type == "phone number"
|
||||
? TextInputType.phone
|
||||
: type == "Email"
|
||||
: type == "email"
|
||||
? TextInputType.emailAddress
|
||||
: TextInputType.name,
|
||||
textEditingController: textEditingController,
|
||||
|
||||
@@ -13,7 +13,8 @@ import 'bloc/language/lng_bloc.dart';
|
||||
import 'bloc/language/lng_event.dart';
|
||||
|
||||
void showLanguageBottomSheet(BuildContext context) {
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
showModalBottomSheet(
|
||||
backgroundColor: Colors.transparent,
|
||||
context: context,
|
||||
|
||||
@@ -15,7 +15,8 @@ import 'text_widget.dart';
|
||||
|
||||
buildprofilelogoutdialog(context) {
|
||||
var localizations = AppLocalizations.of(context);
|
||||
SecureStorageService secureStorageService = SecureStorageService();
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
return showDialog(
|
||||
context: context,
|
||||
builder: (context) => Column(
|
||||
|
||||
@@ -5,7 +5,6 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:gap/gap.dart';
|
||||
import 'package:tanami_app/Api_Helper/base_manager.dart';
|
||||
import 'package:tanami_app/core/styles/app_color.dart';
|
||||
import 'package:tanami_app/core/utils/device_info/device_info_data.dart';
|
||||
import 'package:tanami_app/shared/components/loader.dart';
|
||||
|
||||
import '../../core/routes/route_name.dart';
|
||||
@@ -21,8 +20,8 @@ permissionDialog(
|
||||
context,
|
||||
) {
|
||||
var localizations = AppLocalizations.of(context);
|
||||
final SecureStorageService secureStorageService = SecureStorageService();
|
||||
|
||||
final SharedPreferenceLocalData secureStorageService =
|
||||
SharedPreferenceLocalData();
|
||||
return showDialog(
|
||||
barrierDismissible: true,
|
||||
context: context,
|
||||
@@ -93,7 +92,7 @@ permissionDialog(
|
||||
Map<String, dynamic> biometricdata = {
|
||||
"code": await secureStorageService.read("temp_token"),
|
||||
"is_2FA_on": false,
|
||||
"deviceId": await DeviceInfoData().getDeviceId(),
|
||||
"deviceId": "test-id",
|
||||
"biometric_type":
|
||||
Platform.isIOS ? "face" : "fingerprint"
|
||||
};
|
||||
@@ -135,7 +134,7 @@ permissionDialog(
|
||||
Map<String, dynamic> biometricdata = {
|
||||
"code": await secureStorageService.read("temp_token"),
|
||||
"is_2FA_on": true,
|
||||
"deviceId": await DeviceInfoData().getDeviceId(),
|
||||
"deviceId": "test-id",
|
||||
"biometric_type":
|
||||
Platform.isIOS ? "face" : "fingerprint"
|
||||
};
|
||||
|
||||
@@ -7,16 +7,12 @@
|
||||
#include "generated_plugin_registrant.h"
|
||||
|
||||
#include <flutter_localization/flutter_localization_plugin.h>
|
||||
#include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h>
|
||||
#include <url_launcher_linux/url_launcher_plugin.h>
|
||||
|
||||
void fl_register_plugins(FlPluginRegistry* registry) {
|
||||
g_autoptr(FlPluginRegistrar) flutter_localization_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterLocalizationPlugin");
|
||||
flutter_localization_plugin_register_with_registrar(flutter_localization_registrar);
|
||||
g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin");
|
||||
flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar);
|
||||
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
|
||||
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
flutter_localization
|
||||
flutter_secure_storage_linux
|
||||
url_launcher_linux
|
||||
)
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@ import connectivity_plus
|
||||
import device_info_plus
|
||||
import firebase_core
|
||||
import flutter_localization
|
||||
import flutter_secure_storage_macos
|
||||
import package_info_plus
|
||||
import path_provider_foundation
|
||||
import shared_preferences_foundation
|
||||
@@ -24,7 +23,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
|
||||
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
||||
FlutterLocalizationPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalizationPlugin"))
|
||||
FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin"))
|
||||
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
||||
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
||||
|
||||
138
pubspec.lock
@@ -17,14 +17,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.4.1"
|
||||
archive:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: archive
|
||||
sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.6.1"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -185,14 +177,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.1"
|
||||
cli_util:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cli_util
|
||||
sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.4.1"
|
||||
clock:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -250,7 +234,7 @@ packages:
|
||||
source: hosted
|
||||
version: "3.1.1"
|
||||
crypto:
|
||||
dependency: "direct main"
|
||||
dependency: transitive
|
||||
description:
|
||||
name: crypto
|
||||
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
|
||||
@@ -414,22 +398,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.2"
|
||||
flutter_jailbreak_detection:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_jailbreak_detection
|
||||
sha256: "67ff11ea41965152d24db7104da1f9b343f94ada64c2a9e309ec4d753a12d281"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.10.0"
|
||||
flutter_launcher_icons:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: flutter_launcher_icons
|
||||
sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.13.1"
|
||||
flutter_lints:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
@@ -467,54 +435,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.9.3"
|
||||
flutter_secure_storage:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_secure_storage
|
||||
sha256: "165164745e6afb5c0e3e3fcc72a012fb9e58496fb26ffb92cf22e16a821e85d0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.2.2"
|
||||
flutter_secure_storage_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_linux
|
||||
sha256: "4d91bfc23047422cbcd73ac684bc169859ee766482517c22172c86596bf1464b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
flutter_secure_storage_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_macos
|
||||
sha256: "1693ab11121a5f925bbea0be725abfcfbbcf36c1e29e571f84a0c0f436147a81"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
flutter_secure_storage_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_platform_interface
|
||||
sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.2"
|
||||
flutter_secure_storage_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_web
|
||||
sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
flutter_secure_storage_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_windows
|
||||
sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
flutter_svg:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -621,14 +541,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
image:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image
|
||||
sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.2.0"
|
||||
intl:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -749,14 +661,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
lottie:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: lottie
|
||||
sha256: "6a24ade5d3d918c306bb1c21a6b9a04aab0489d51a2582522eea820b4093b62b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -917,6 +821,38 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0+3"
|
||||
pay:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: pay
|
||||
sha256: ad904db0e06848cade6990a3ce1e10e921ae48f7ee06447873e07b9688ac1fc5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
pay_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pay_android
|
||||
sha256: aa46cd0ece1807d3fa293113fdb84afb5fc4b6ed60cf09a4886b753acb300859
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
pay_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pay_ios
|
||||
sha256: "75ccb285d03f22b136c58ab8e8e0c4b614ee52a8b67e6ccfb680d4d8c04a70f6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.11"
|
||||
pay_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pay_platform_interface
|
||||
sha256: "26a379e33c46508987c7afee8cde6f4aca5b5ab0afc697c27efbd33a9c2ea82a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
permission_handler:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1037,14 +973,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.27.7"
|
||||
secure_application:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: secure_application
|
||||
sha256: b8e34b4bc2467a3a3c0a649e46ae6a442df7ca27aeaddebb8a53c40656da0385
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.1"
|
||||
shared_preferences:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
||||
28
pubspec.yaml
@@ -45,7 +45,7 @@ dependencies:
|
||||
firebase_core: ^2.31.1
|
||||
|
||||
# Animation
|
||||
lottie: ^3.1.2
|
||||
#lottie: ^3.1.2
|
||||
shimmer: ^3.0.0
|
||||
smooth_page_indicator: ^1.1.0
|
||||
|
||||
@@ -56,11 +56,10 @@ dependencies:
|
||||
|
||||
# Security
|
||||
shared_preferences: ^2.2.3
|
||||
flutter_secure_storage: ^9.2.2
|
||||
local_auth: ^2.2.0
|
||||
crypto: ^3.0.3
|
||||
flutter_jailbreak_detection: ^1.10.0
|
||||
secure_application: ^4.0.1
|
||||
#crypto: ^3.0.3
|
||||
# flutter_jailbreak_detection: ^1.10.0
|
||||
# secure_application: ^4.0.1
|
||||
|
||||
# Toast Messages
|
||||
toastification: ^2.0.0
|
||||
@@ -77,6 +76,8 @@ dependencies:
|
||||
|
||||
#OTP Autofill
|
||||
sms_autofill: ^2.3.1
|
||||
|
||||
#Image
|
||||
carousel_slider: ^4.2.1
|
||||
|
||||
#Url Launcher
|
||||
@@ -104,6 +105,9 @@ dependencies:
|
||||
#Pdf
|
||||
syncfusion_flutter_pdfviewer:
|
||||
|
||||
#Payment
|
||||
pay: ^2.0.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
@@ -111,13 +115,14 @@ dev_dependencies:
|
||||
build_runner:
|
||||
|
||||
flutter_lints: ^3.0.0
|
||||
flutter_launcher_icons: ^0.13.1
|
||||
# flutter_launcher_icons: ^0.13.1
|
||||
|
||||
flutter_launcher_icons:
|
||||
android: "launcher_icon"
|
||||
ios: true
|
||||
image_path: "assets/images/Vector.png"
|
||||
min_sdk_android: 21
|
||||
# flutter_launcher_icons:
|
||||
# android: "launcher_icon"
|
||||
# ios: true
|
||||
# image_path: "assets/images/Vector.jpg"
|
||||
# min_sdk_android: 21
|
||||
# remove_alpha_ios: true
|
||||
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
@@ -154,3 +159,4 @@ flutter:
|
||||
- assets/images/no_internet/png/
|
||||
- assets/language/en.json
|
||||
- assets/language/ar.json
|
||||
- assets/payment/
|
||||
|
||||
@@ -9,10 +9,8 @@
|
||||
#include <connectivity_plus/connectivity_plus_windows_plugin.h>
|
||||
#include <firebase_core/firebase_core_plugin_c_api.h>
|
||||
#include <flutter_localization/flutter_localization_plugin_c_api.h>
|
||||
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
|
||||
#include <local_auth_windows/local_auth_plugin.h>
|
||||
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
||||
#include <secure_application/secure_application_plugin.h>
|
||||
#include <syncfusion_pdfviewer_windows/syncfusion_pdfviewer_windows_plugin.h>
|
||||
#include <url_launcher_windows/url_launcher_windows.h>
|
||||
|
||||
@@ -23,14 +21,10 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
|
||||
FlutterLocalizationPluginCApiRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("FlutterLocalizationPluginCApi"));
|
||||
FlutterSecureStorageWindowsPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin"));
|
||||
LocalAuthPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("LocalAuthPlugin"));
|
||||
PermissionHandlerWindowsPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
||||
SecureApplicationPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("SecureApplicationPlugin"));
|
||||
SyncfusionPdfviewerWindowsPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("SyncfusionPdfviewerWindowsPlugin"));
|
||||
UrlLauncherWindowsRegisterWithRegistrar(
|
||||
|
||||
@@ -6,10 +6,8 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
||||
connectivity_plus
|
||||
firebase_core
|
||||
flutter_localization
|
||||
flutter_secure_storage_windows
|
||||
local_auth_windows
|
||||
permission_handler_windows
|
||||
secure_application
|
||||
syncfusion_pdfviewer_windows
|
||||
url_launcher_windows
|
||||
)
|
||||
|
||||