diff --git a/.env b/.env index c85714a..cde128d 100644 --- a/.env +++ b/.env @@ -39,8 +39,62 @@ payMobOutClientSecrret='xyjjRlahJM0Xc38WjApCOh8bvgL9slFpNdM9YeCu9AhLqboKMPtmSvc2 payMobOutClient_id='Z05ut48dVkS2gI2zenFFcKsfDKfHAU0WELqKyJ0LXrXlBl' payMobOutPassword='D2zJFxkE#LN3vz38z2dYxpNfWXrXlBl' payMobOutUserName='zjujl_qvo_fwjfgjlXrXlBl' +keyOfApp=nqryjp@1737wqnmqqsjyzjujljksvceiXrXlBl +a= q +b= x +c= f +d= y +e= j +f= u +g= k +h= w +i= o +j= e +k= g +l= r +m= n +n= b +o= i +p= v +q= a +r= l +s= z +t= c +u= h +v= p +w= t +x= d +y= s +z= m + +A= Q +B= X +C= F +D= Y +E= J +F= U +G= K +H= W +I= O +J= E +K= G +L= R +M= N +N= B +O= I +P= V +Q= A +R= L +S= Z +T= C +U= H +V= P +W= T +X= D +Y= S +Z= M # #basicAuthCredentials= q9XDwNb2SWHU9nq0tIqWYIN+bvXt54jPVrBFOZUstsnk3Ndz2BOSI3wLC3GKMuqE #basicCompareFaces= ZK2RkvTEAi0ihtR0GuJ+H2bmU1OVn5V/f9NLVoKZZdE= @@ -58,7 +112,7 @@ payMobOutUserName='zjujl_qvo_fwjfgjlXrXlBl' #secretKey= PNwYqtlLcDMlmKbzy3++wSPC/XB9WX2t+zfrJDsYz7LXD5jVFUGs3CXUF227VDGPe1sk10yMGLM4E818969GF7/qhZjLzwF8qXLAEpUhtGniQ+undfoiJw2vNfB4lXWKgQQC4N+/6KPb7zSZx8o8yVlvL/5iZiuf1LYhUhjJmJE= #stripe_publishableKe= gyXxuOp+vaGcRTTBohZeTaK7HEhpNUVvWGcBNABhzHu125y6ftOwvf1Z8fYlfaG/ysClJpqfxBU8+RulI7KhtJM5mVrmALFiypv/6IlkACsundM6zkbxQGHzjfQdrfkdFZF00fpYjOI/3P/znZIlKGYYLmdxUqF3chAfYDet1/I= #llamaKey= a3oCdxMeaKjatKyLQEnPMLqFmfLe9mCGRofsROVQ6NF7SCqxOt7h2A/KvdYWGBM42SxNTuWIq5+UsnPulqKbd3yVTRnG+Lx0rxPa+9mc48frICnl+hz6CSmJjOjDhHnE -#serverPHP= blf8gn/gV8/mvMZlPdJMnSu+ATBZfBThpVjNb9mzXT7OfBrBSZnCBxveUsCcXUW3 +#serverPHP= bWjMqX8G7gUyLhrQ85zAXSe2YLffF62PaPHyYK1WcQTPTjcj2+sRswzOU1XPVu+n #cohere= SvRbfrRc+Gyyy20otHDz1cNNcQpoMyLm+TIkTyfZI7vnxkgsEYiGdYOJ0Punkz6JdY4qa3B0fu2OCZ7NOa6Y1w== #claudeAiAPI= oO1ZcIFPBgin9gQs5vNT/oDs0KpJDVnjwXqKjCAABoezFxLUpAMINvSNruW7DFU2mbsjpJTDwpTzddsMCIPqi7AjzBpW6X1ddxYX+ZPuJ55Kymj5KvTHAwYYhW7F3l9sOjrtODWwhH6uGTNfh3Ftz531Xb2Qr5d3rKDC4H5tkFM= #payPalClientId= VmMsEn1Kz4wCqCnWOm+XoUE2k2c7wA9y2cHqe303GSR9HfnuDqpbcijBYDs5EGYsYF/t68M1xlAp1OX+oXSN3RSsjKelJmbbreg8YtjTeErMVOSGHrsOHRY7hqlUYvmN8DUTlRTFvIdTX+RafY2LiA== diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 7e11691..a92da10 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -21,7 +21,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 45 + 46 CFBundleSignature ???? CFBundleURLTypes @@ -36,7 +36,7 @@ CFBundleVersion - 4.0.45 + 4.0.46 FirebaseAppDelegateProxyEnabled NO GMSApiKey diff --git a/lib/constant/api_key.dart b/lib/constant/api_key.dart index 107c070..dc2c108 100644 --- a/lib/constant/api_key.dart +++ b/lib/constant/api_key.dart @@ -68,6 +68,9 @@ class AK { a.r(a.r(a.r(Env.payMobOutPassword, cn), cC), cs); static final String payMobOutUserName = a.r(a.r(a.r(Env.payMobOutUserName, cn), cC), cs); + + ///////////// + static final String keyOfApp = a.r(a.r(a.r(Env.keyOfApp, cn), cC), cs); } // diff --git a/lib/constant/char_map.dart b/lib/constant/char_map.dart index d6a6ee7..33e5017 100644 --- a/lib/constant/char_map.dart +++ b/lib/constant/char_map.dart @@ -1,3 +1,5 @@ +import 'package:SEFER/env/env.dart'; + Map cn = { "0": "3", "1": "7", @@ -11,58 +13,58 @@ Map cn = { "9": "8" }; Map cs = { - "a": "q", - "b": "x", - "c": "f", - "d": "y", - "e": "j", - "f": "u", - "g": "k", - "h": "w", - "i": "o", - "j": "e", - "k": "g", - "l": "r", - "m": "n", - "n": "b", - "o": "i", - "p": "v", - "q": "a", - "r": "l", - "s": "z", - "t": "c", - "u": "h", - "v": "p", - "w": "t", - "x": "d", - "y": "s", - "z": "m" + "a": Env.a, + "b": Env.b, + "c": Env.c, + "d": Env.d, + "e": Env.e, + "f": Env.f, + "g": Env.g, + "h": Env.h, + "i": Env.i, + "j": Env.j, + "k": Env.k, + "l": Env.l, + "m": Env.m, + "n": Env.n, + "o": Env.o, + "p": Env.p, + "q": Env.q, + "r": Env.r, + "s": Env.s, + "t": Env.t, + "u": Env.u, + "v": Env.v, + "w": Env.w, + "x": Env.x, + "y": Env.y, + "z": Env.z, }; Map cC = { - "A": "Q", - "B": "X", - "C": "F", - "D": "Y", - "E": "J", - "F": "U", - "G": "K", - "H": "W", - "I": "O", - "J": "E", - "K": "G", - "L": "R", - "M": "N", - "N": "B", - "O": "I", - "P": "V", - "Q": "A", - "R": "L", - "S": "Z", - "T": "C", - "U": "H", - "V": "P", - "W": "T", - "X": "D", - "Y": "S", - "Z": "M" + "A": Env.A, + "B": Env.B, + "C": Env.C, + "D": Env.D, + "E": Env.E, + "F": Env.F, + "G": Env.G, + "H": Env.H, + "I": Env.I, + "J": Env.J, + "K": Env.K, + "L": Env.L, + "M": Env.M, + "N": Env.N, + "O": Env.O, + "P": Env.P, + "Q": Env.Q, + "R": Env.R, + "S": Env.S, + "T": Env.T, + "U": Env.U, + "V": Env.V, + "W": Env.W, + "X": Env.X, + "Y": Env.Y, + "Z": Env.Z }; diff --git a/lib/constant/credential.dart b/lib/constant/credential.dart index 0054b50..0c1a00b 100644 --- a/lib/constant/credential.dart +++ b/lib/constant/credential.dart @@ -12,7 +12,7 @@ class AC { if (box.read(BoxName.apiKeyRun).toString() != 'run') { var res = await CRUD().get(link: AppLink.getApiKey, payload: {}); var decod = jsonDecode(res); - print(decod); + // print(decod); Map jsonData = {}; for (var i = 0; i < decod['message'].length; i++) { String h = decod['message'][i]['hashed_key'].toString(); diff --git a/lib/constant/info.dart b/lib/constant/info.dart index 5254d29..4cc090b 100644 --- a/lib/constant/info.dart +++ b/lib/constant/info.dart @@ -1,14 +1,14 @@ class AppInformation { - static const String companyName = 'Mobile-App'; + static const String companyName = 'SEFER LLC'; static const String appName = 'SEFER'; + static const String appVersion = 'SEFER Captain'; static const String phoneNumber = '962798583052'; static const String linkedInProfile = 'https://www.linkedin.com/in/hamza-ayed/'; - static const String website = 'https://mobile-app.store'; - static const String email = 'hamzaayed@mobile-app.store'; + static const String website = 'https://sefer.live'; + static const String email = 'hamzaayed@sefer.live'; - static const String privacyPolicy = - ''' + static const String privacyPolicy = ''' diff --git a/lib/constant/links.dart b/lib/constant/links.dart index 71b7f12..b2d9eaf 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -206,6 +206,7 @@ class AppLink { static String authCaptin = '$server/auth/captin'; static String loginCaptin = "$authCaptin/login.php"; static String loginFromGoogleCaptin = "$authCaptin/loginFromGoogle.php"; + static String packageInfo = "$server/auth/packageInfo.php"; static String signUpCaptin = "$authCaptin/register.php"; static String sendVerifyEmailCaptin = "$authCaptin/sendVerifyEmail.php"; static String sendVerifyOtpMessage = diff --git a/lib/constant/style.dart b/lib/constant/style.dart index db32766..961aa75 100644 --- a/lib/constant/style.dart +++ b/lib/constant/style.dart @@ -42,9 +42,9 @@ class AppStyle { static BoxDecoration boxDecoration = const BoxDecoration( boxShadow: [ BoxShadow( - color: AppColor.accentColor, blurRadius: 5, offset: Offset(2, 4)), + color: AppColor.accentColor, blurRadius: 2, offset: Offset(1, 2)), BoxShadow( - color: AppColor.accentColor, blurRadius: 5, offset: Offset(-2, -2)) + color: AppColor.accentColor, blurRadius: 2, offset: Offset(-1, -1)) ], color: AppColor.secondaryColor, borderRadius: BorderRadius.all( @@ -53,9 +53,9 @@ class AppStyle { static BoxDecoration boxDecoration1 = const BoxDecoration( boxShadow: [ BoxShadow( - color: AppColor.accentColor, blurRadius: 5, offset: Offset(2, 4)), + color: AppColor.accentColor, blurRadius: 2, offset: Offset(1, 2)), BoxShadow( - color: AppColor.accentColor, blurRadius: 5, offset: Offset(-2, -2)) + color: AppColor.accentColor, blurRadius: 2, offset: Offset(-1, -1)) ], color: AppColor.secondaryColor, borderRadius: BorderRadius.all( diff --git a/lib/controller/functions/encrypt.dart b/lib/controller/functions/encrypt.dart index 5e97aa5..fd79daf 100644 --- a/lib/controller/functions/encrypt.dart +++ b/lib/controller/functions/encrypt.dart @@ -1,21 +1,19 @@ -import 'package:encrypt/encrypt.dart' as encrypt; import 'dart:convert'; -import 'package:http/http.dart' as http; +import 'package:encrypt/encrypt.dart' as encrypt; -// -import 'dart:convert'; -import 'dart:math'; -import 'package:encrypt/encrypt.dart' as encrypt; +import '../../constant/api_key.dart'; class KeyEncryption { - static final _key = encrypt.Key.fromUtf8('mehmetDEV@2101'); // ضع مفتاحك هنا + // استخدم مفتاح بطول 32 حرفًا + static final _key = encrypt.Key.fromUtf8(AK.keyOfApp); + static final _iv = + encrypt.IV.fromLength(16); // توليد تهيئة عشوائية بطول 16 بايت static String encryptKey(String key) { - final iv = encrypt.IV.fromLength(16); // توليد تهيئة عشوائية final encrypter = encrypt.Encrypter(encrypt.AES(_key, mode: encrypt.AESMode.cbc)); - final encrypted = encrypter.encrypt(key, iv: iv); - final result = iv.bytes + encrypted.bytes; // تضمين التهيئة مع النص المشفر + final encrypted = encrypter.encrypt(key, iv: _iv); + final result = _iv.bytes + encrypted.bytes; // تضمين التهيئة مع النص المشفر return base64Encode(result); } @@ -29,55 +27,3 @@ class KeyEncryption { return encrypter.decrypt(encrypted, iv: iv); } } - -// class KeyEncryption { -// static final _key = encrypt.Key.fromUtf8('7'); // ضع مفتاحك هنا -// -// static String encryptKey(String key) { -// final iv = encrypt.IV.fromLength(16); // توليد تهيئة عشوائية -// final encrypter = -// encrypt.Encrypter(encrypt.AES(_key, mode: encrypt.AESMode.cbc)); -// final encrypted = encrypter.encrypt(key, iv: iv); -// final result = iv.bytes + encrypted.bytes; // تضمين التهيئة مع النص المشفر -// return base64Encode(result); -// } -// -// static String decryptKey(String encryptedKey) { -// final decoded = base64Decode(encryptedKey); -// final iv = encrypt.IV(decoded.sublist(0, 16)); // استخراج التهيئة -// final encrypted = -// encrypt.Encrypted(decoded.sublist(16)); // استخراج النص المشفر -// final encrypter = -// encrypt.Encrypter(encrypt.AES(_key, mode: encrypt.AESMode.cbc)); -// return encrypter.decrypt(encrypted, iv: iv); -// } -// } - -// class KeyEncryption { -// static final _key = -// encrypt.Key.fromUtf8('32-character-key....'); // ضع مفتاحك هنا -// -// static String encryptKey(String key) { -// final iv = encrypt.IV.fromLength(16); // توليد تهيئة عشوائية -// final encrypter = -// encrypt.Encrypter(encrypt.AES(_key, mode: encrypt.AESMode.cbc)); -// final encrypted = encrypter.encrypt(key, iv: iv); -// final result = iv.bytes + encrypted.bytes; // تضمين التهيئة مع النص المشفر -// return base64Encode(result); -// } -// -// static Future storeApiKeys(List apiKeys) async { -// final encryptedKeys = apiKeys.map((key) => encryptKey(key)).toList(); -// final response = await http.post( -// Uri.parse('https://yourdomain.com/store_keys.php'), -// body: jsonEncode({'keys': encryptedKeys}), -// headers: {'Content-Type': 'application/json'}, -// ); -// -// if (response.statusCode == 200) { -// print('Keys stored successfully.'); -// } else { -// print('Failed to store keys.'); -// } -// } -// } diff --git a/lib/controller/functions/package_info.dart b/lib/controller/functions/package_info.dart new file mode 100644 index 0000000..b8bfbdf --- /dev/null +++ b/lib/controller/functions/package_info.dart @@ -0,0 +1,67 @@ +import 'dart:convert'; +import 'dart:io'; +import 'package:SEFER/constant/links.dart'; +import 'package:SEFER/controller/functions/crud.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:url_launcher/url_launcher.dart'; +import '../../constant/info.dart'; + +Future checkForUpdate(BuildContext context) async { + final packageInfo = await PackageInfo.fromPlatform(); + final currentVersion = packageInfo.buildNumber; + print('currentVersion is : $currentVersion'); + // Fetch the latest version from your server + String latestVersion = await getPackageInfo(); + + if (latestVersion.isNotEmpty && latestVersion != currentVersion) { + showUpdateDialog(context); + } +} + +Future getPackageInfo() async { + final response = await CRUD().get(link: AppLink.packageInfo, payload: { + "platform": Platform.isAndroid ? 'android' : 'ios', + "appName": AppInformation.appName, + }); + + if (response != 'failure') { + return jsonDecode(response)['message'][0]['version']; + } + return ''; +} + +void showUpdateDialog(BuildContext context) { + final String storeUrl = Platform.isAndroid + ? 'https://play.google.com/store/apps/details?id=com.sefer_driver' + : 'https://apps.apple.com/ae/app/sefer/id6458734951'; + showCupertinoDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return CupertinoAlertDialog( + title: Text('Update Available'.tr), + content: Text( + 'A new version of the app is available. Please update to the latest version.' + .tr, + ), + actions: [ + CupertinoDialogAction( + child: Text('Update'.tr), + onPressed: () async { + if (await canLaunchUrl(Uri.parse(storeUrl))) { + await launchUrl(Uri.parse(storeUrl)); + } else { + print('Could not launch $storeUrl'); + } + + Navigator.of(context).pop(); + }, + ), + ], + ); + }, + ); +} diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 23d8d93..6085129 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -4,6 +4,9 @@ class MyTranslation extends Translations { @override Map> get keys => { "ar": { + "Update Available": "تحديث متوفر", + "A new version of the app is available. Please update to the latest version.": + "تتوفر نسخة جديدة من التطبيق. يرجى التحديث إلى أحدث إصدار.", "We use location to get accurate and nearest passengers for you": "نستخدم الموقع للحصول على أقرب الركاب وأكثرهم دقة لك", "This ride is already applied by another driver.": diff --git a/lib/controller/rate/rate_conroller.dart b/lib/controller/rate/rate_conroller.dart index 78d03d6..f73f1df 100644 --- a/lib/controller/rate/rate_conroller.dart +++ b/lib/controller/rate/rate_conroller.dart @@ -56,43 +56,44 @@ class RateController extends GetxController { if (value != 'failure') { Get.snackbar('Wallet Added'.tr, '', backgroundColor: AppColor.greenColor); - if (double.parse( - Get.find().totalAmountVisa) > - remainingFee) { - var paymentToken3 = await Get.find() - .generateTokenDriver((-1 * remainingFee).toString()); + // if (double.parse( + // Get.find().totalAmountVisa) > + // remainingFee) { + var paymentToken3 = await Get.find() + .generateTokenDriver((-1 * remainingFee).toString()); - await CRUD().post(link: AppLink.addDrivePayment, payload: { - 'rideId': 'remain$rideId', - 'amount': (-1 * remainingFee).toString(), - 'payment_method': 'Remainder', - 'passengerID': passengerId, - 'token': paymentToken3, - 'driverID': box.read(BoxName.driverID).toString(), - }); - } else { - double pointsSubtraction = 0; - pointsSubtraction = remainingFee * - (-1) / - double.parse( - Get.find().kazan); // for egypt /100 - var paymentToken4 = await Get.find() - .generateTokenDriver((pointsSubtraction).toStringAsFixed(0)); - var res = await CRUD() - .post(link: AppLink.addDriversWalletPoints, payload: { - 'paymentID': 'rideId$rideId', - 'amount': (pointsSubtraction).toStringAsFixed(0), - 'paymentMethod': 'Remainder', - 'token': paymentToken4, - 'driverID': box.read(BoxName.driverID).toString(), - }); - FirebaseMessagesController().sendNotificationToAnyWithoutData( - 'Wallet Added'.tr, - 'Wallet Added${(remainingFee).toStringAsFixed(0)}'.tr, - Get.find().tokenPassenger, - 'tone2.wav'); - walletChecked = 'true'; - } + await CRUD().post(link: AppLink.addDrivePayment, payload: { + 'rideId': 'remain$rideId', + 'amount': (-1 * remainingFee).toString(), + 'payment_method': 'Remainder', + 'passengerID': passengerId, + 'token': paymentToken3, + 'driverID': box.read(BoxName.driverID).toString(), + }); + // } + // else { + // double pointsSubtraction = 0; + // pointsSubtraction = remainingFee * + // (-1) / + // double.parse( + // Get.find().kazan); // for egypt /100 + // var paymentToken4 = await Get.find() + // .generateTokenDriver((pointsSubtraction).toStringAsFixed(0)); + // var res = await CRUD() + // .post(link: AppLink.addDriversWalletPoints, payload: { + // 'paymentID': 'rideId$rideId', + // 'amount': (pointsSubtraction).toStringAsFixed(0), + // 'paymentMethod': 'Remainder', + // 'token': paymentToken4, + // 'driverID': box.read(BoxName.driverID).toString(), + // }); + FirebaseMessagesController().sendNotificationToAnyWithoutData( + 'Wallet Added'.tr, + 'Wallet Added${(remainingFee).toStringAsFixed(0)}'.tr, + Get.find().tokenPassenger, + 'tone2.wav'); + walletChecked = 'true'; + // } update(); } diff --git a/lib/main.dart b/lib/main.dart index 9be60d5..e7ac128 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -17,6 +17,7 @@ import 'constant/info.dart'; import 'controller/firebase/firbase_messge.dart'; import 'controller/firebase/local_notification.dart'; import 'controller/functions/location_controller.dart'; +import 'controller/functions/package_info.dart'; import 'controller/local/local_controller.dart'; import 'controller/local/translations.dart'; import 'controller/payment/paymob/paymob_wallet.dart'; @@ -109,7 +110,7 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { LocaleController localController = Get.put(LocaleController()); - + // checkForUpdate(context); return GetMaterialApp( title: AppInformation.appName, translations: MyTranslation(), diff --git a/lib/views/home/Captin/home_captain/home_captin.dart b/lib/views/home/Captin/home_captain/home_captin.dart index 486b7c6..6f4c3a7 100644 --- a/lib/views/home/Captin/home_captain/home_captin.dart +++ b/lib/views/home/Captin/home_captain/home_captin.dart @@ -10,6 +10,7 @@ import '../../../../constant/info.dart'; import '../../../../constant/style.dart'; import '../../../../constant/table_names.dart'; import '../../../../controller/functions/location_controller.dart'; +import '../../../../controller/functions/package_info.dart'; import '../../../../controller/home/captin/home_captain_controller.dart'; import '../../../../controller/home/captin/order_request_controller.dart'; import '../../../widgets/circle_container.dart'; @@ -28,6 +29,9 @@ class HomeCaptain extends StatelessWidget { Widget build(BuildContext context) { Get.put(OrderRequestController()); Get.put(HomeCaptainController()); + WidgetsBinding.instance.addPostFrameCallback((_) { + checkForUpdate(context); + }); return Scaffold( appBar: AppBar( // backgroundColor: AppColor.accentColor, diff --git a/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart b/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart index a941572..4e726f8 100644 --- a/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart +++ b/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart @@ -22,50 +22,52 @@ GetBuilder leftMainMenuCaptainIcons() { left: 6, child: Column( children: [ - // AnimatedContainer( - // duration: const Duration(microseconds: 200), - // width: controller.widthMapTypeAndTraffic, - // decoration: BoxDecoration( - // border: Border.all(color: AppColor.blueColor), - // color: AppColor.secondaryColor, - // borderRadius: BorderRadius.circular(15)), - // child: IconButton( - // onPressed: () { - // // AC credentials = AC(); - // String apiKey = 'mehmetDEV@2101'; - // // String convertedStringN = credentials.c( - // // credentials.c(credentials.c(apiKey, cs), cC), cn); - // // print(convertedStringN); - // // String retrievedStringS = credentials.r( - // // credentials.r(credentials.r(convertedStringN, cn), cC), - // // cs); - // // print(retrievedStringS); - // // // - // // if (retrievedStringS == apiKey) { - // // print('same'); - // // } - // - // // key.forEach((key, apiKey) { - // String encryptedApiKey = KeyEncryption.encryptKey(apiKey); - // print('Encrypted = $encryptedApiKey'); - // - // String decryptedApiKey = - // KeyEncryption.decryptKey(encryptedApiKey); - // print('Decrypted : $decryptedApiKey'); - // - // // if (decryptedApiKey == apiKey) { - // // print('Keys match for $decryptedApiKey'); - // // } else { - // // // print('Keys do not match for $key'); - // // } - // // }); - // }, - // icon: const Icon( - // FontAwesome.map_signs, - // size: 24, - // color: Colors.black, - // )), - // ), + AnimatedContainer( + duration: const Duration(microseconds: 200), + width: controller.widthMapTypeAndTraffic, + decoration: BoxDecoration( + border: Border.all(color: AppColor.blueColor), + color: AppColor.secondaryColor, + borderRadius: BorderRadius.circular(15)), + child: IconButton( + onPressed: () { + // AC credentials = AC(); + String apiKey = 'maldev@2101hamzaayedseferegyptjo'; + // String convertedStringN = credentials.c( + // credentials.c(credentials.c(apiKey, cs), cC), cn); + // print(convertedStringN); + // String retrievedStringS = credentials.r( + // credentials.r(credentials.r(convertedStringN, cn), cC), + // cs); + // print(retrievedStringS); + // // + // if (retrievedStringS == apiKey) { + // print('same'); + // } + + // key.forEach((key, apiKey) { + + // keys.forEach((key, apiKey) { + String encryptedApiKey = KeyEncryption.encryptKey(apiKey); + print('Encrypted API Key for : $encryptedApiKey'); + + String decryptedApiKey = KeyEncryption.decryptKey( + "Hsd7tLdt4ZsSRMCCs0xia2ct9O1jrJKyZu6pvh6MjL8qg6TkJ9FZCW4H/OqCkMjtokBOTdTX0P2sASLTcTxBVA=="); + print('Decrypted API Key for : $decryptedApiKey'); + + if (decryptedApiKey == apiKey) { + print('Keys match for '); + } else { + print('Keys do not match for '); + } + // }); + }, + icon: const Icon( + FontAwesome.map_signs, + size: 24, + color: Colors.black, + )), + ), const SizedBox( height: 5, ), diff --git a/pubspec.lock b/pubspec.lock index de705d5..2bcbd59 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -413,10 +413,10 @@ packages: dependency: transitive description: name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" file: dependency: transitive description: @@ -1377,21 +1377,21 @@ packages: source: hosted version: "2.1.0" package_info_plus: - dependency: transitive + dependency: "direct main" description: name: package_info_plus - sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017" + sha256: b93d8b4d624b4ea19b0a5a208b2d6eff06004bc3ce74c06040b120eeadd00ce0 url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "8.0.0" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" + sha256: f49918f3433a3146047372f9d4f1f847511f2acd5cd030e1f44fe5a50036b70e url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.0" path: dependency: "direct main" description: @@ -1524,10 +1524,10 @@ packages: dependency: transitive description: name: plugin_platform_interface - sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8 + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "2.1.8" pointycastle: dependency: transitive description: @@ -2001,18 +2001,18 @@ packages: dependency: "direct main" description: name: wakelock_plus - sha256: f268ca2116db22e57577fb99d52515a24bdc1d570f12ac18bb762361d43b043d + sha256: "14758533319a462ffb5aa3b7ddb198e59b29ac3b02da14173a1715d65d4e6e68" url: "https://pub.dev" source: hosted - version: "1.1.4" + version: "1.2.5" wakelock_plus_platform_interface: dependency: transitive description: name: wakelock_plus_platform_interface - sha256: "40fabed5da06caff0796dc638e1f07ee395fb18801fbff3255a2372db2d80385" + sha256: "422d1cdbb448079a8a62a5a770b69baa489f8f7ca21aef47800c726d404f9d16" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.1" watcher: dependency: transitive description: @@ -2073,10 +2073,10 @@ packages: dependency: transitive description: name: win32 - sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574 + sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 url: "https://pub.dev" source: hosted - version: "5.1.1" + version: "5.5.1" win32_registry: dependency: transitive description: @@ -2110,5 +2110,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.3.0 <4.0.0" + dart: ">=3.4.0 <4.0.0" flutter: ">=3.19.0" diff --git a/pubspec.yaml b/pubspec.yaml index 9ab40b4..8210a90 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -64,13 +64,14 @@ dependencies: google_mlkit_text_recognition: ^0.13.0 sign_in_with_apple: ^6.1.0 firebase_auth: ^4.19.6 + package_info_plus: ^8.0.0 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^3.0.1 envied_generator: ^0.5.2 - build_runner: ^2.4.6 + build_runner: flutter_launcher_icons: android: "launcher_icon"