From 990b507cc3463cc7c08cb276569b9d9610b79f04 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Mon, 20 Nov 2023 15:46:22 +0300 Subject: [PATCH] 11/20/2 --- .env | 12 + .gitignore | 9 +- android/app/build.gradle | 8 +- key/api_key.json | 14 ++ lib.zip | Bin 69666 -> 0 bytes lib/constant/credential.dart | 37 +-- lib/controller/firebase/firbase_messge.dart | 26 +- lib/controller/functions/crud.dart | 15 +- lib/main.dart | 19 +- lib/views/auth/captin/login_captin.dart | 30 +-- pubspec.lock | 248 ++++++++++++++++++++ pubspec.yaml | 3 + 12 files changed, 357 insertions(+), 64 deletions(-) create mode 100644 .env create mode 100644 key/api_key.json delete mode 100644 lib.zip diff --git a/.env b/.env new file mode 100644 index 0000000..962cd2c --- /dev/null +++ b/.env @@ -0,0 +1,12 @@ +basicAuthCredentials=wqnmqqsjyvwv:nqrDEV@2101Br +accountSIDTwillo=ACx4qy857juj0903xuy6238q763q2fj4y1Br +serverAPI=AAAAobYrrCi:APA91xF1zwTvmSzSdaxuY6f60D8mz1ZzyIzr9od6br7GDyeCaWPRK0G0hx5SaFyx1eDvQDpQPdGk-697MWLi0zs3iYInBtBLOxswg0GecNmsl0PxE3wI-vOpwu8Vv1dkUkBniuxZYXgHBr +mapAPIKEY=AImqSsCsutRXTtSTLOFQSQkN5v7QZkGJVZbEKa0Br +twilloRecoveryCode=TQF13XUVU2NJ3VFU8JWBWYBSBr +authTokenTwillo=14u39ju4628xx8q4u18469u462u8qu75Br +chatGPTkey=zg-8T67q8YDNGAeUSXqkHowT3BrxgFJfFy3ELw6rm7A6adb0kjwBr +transactionCloude=Ahcwilomqcoib:API_EMDJX6BHQ67DBGT6WV:DG2XPU7YEN02M0VJ2FBr +visionApi=0vALyaDDYHpmv73Q59SIkxmeG7Z2mgwJXlBr +chatGPTkeySefer=zg-OiL08ooza0Dvhvb3rSk2T3BrxgFJ4l9jLLSrUj0Ae5ABVlqPBr +secretKey=zg_cjzc_51O4WTODMEVlOCA5SBkqiSS69bNFRsuZd2Tr5ODztYseaLvf0RdBHW3wwfP38Tv78TZ1PQiZi7jHFrrRoQy3lMHPN00Ll9WD3b2Br +stripe_publishableKe=vg_cjzc_51O4WTODMEVlOCA5SN5j6x8vApF5CPDC3f3Pou18a74NEQAvU5AunZZEN9X2WIqsuIlUTeeh1vUqpnkijLkx3FR5g00vb4iMHGOBr \ No newline at end of file diff --git a/.gitignore b/.gitignore index fdd6e81..2b65d0e 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,9 @@ app.*.map.json /android/app/profile /android/app/release - - -lib/constant/credential.dart \ No newline at end of file +.env +lib/env/env.dart +lib/env/env.g.dart +lib/constant/api_keys.json +lib/constant/credential.dart +api_keys.json \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index f94e208..d353a21 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -14,12 +14,12 @@ if (flutterRoot == null) { def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { - flutterVersionCode = '8' + flutterVersionCode = '11' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { - flutterVersionName = '2.1.2' + flutterVersionName = '1.1.1' } apply plugin: 'com.android.application' @@ -55,8 +55,8 @@ android { // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion - versionCode 10 - versionName '1.1.0' + versionCode 11 + versionName '1.1.1' } signingConfigs { diff --git a/key/api_key.json b/key/api_key.json new file mode 100644 index 0000000..a4a598c --- /dev/null +++ b/key/api_key.json @@ -0,0 +1,14 @@ +{ + "basicAuthCredentials": "wqnmqqsjyvwv:nqrDEV@2101Br", + "accountSIDTwillo": "ACx4qy857juj0903xuy6238q763q2fj4y1Br", + "serverAPI": "AAAAobYrrCi:APA91xF1zwTvmSzSdaxuY6f60D8mz1ZzyIzr9od6br7GDyeCaWPRK0G0hx5SaFyx1eDvQDpQPdGk-697MWLi0zs3iYInBtBLOxswg0GecNmsl0PxE3wI-vOpwu8Vv1dkUkBniuxZYXgHBr", + "mapAPIKEY": "AImqSsCsutRXTtSTLOFQSQkN5v7QZkGJVZbEKa0Br", + "twilloRecoveryCode": "TQF13XUVU2NJ3VFU8JWBWYBSBr", + "authTokenTwillo": "14u39ju4628xx8q4u18469u462u8qu75Br", + "chatGPTkey": "zg-8T67q8YDNGAeUSXqkHowT3BrxgFJfFy3ELw6rm7A6adb0kjwBr", + "transactionCloude": "Ahcwilomqcoib:API_EMDJX6BHQ67DBGT6WV:DG2XPU7YEN02M0VJ2FBr", + "visionApi": "0vALyaDDYHpmv73Q59SIkxmeG7Z2mgwJXlBr", + "stripe_publishableKe": "vg_cjzc_51O4WTODMEVlOCA5SN5j6x8vApF5CPDC3f3Pou18a74NEQAvU5AunZZEN9X2WIqsuIlUTeeh1vUqpnkijLkx3FR5g00vb4iMHGOBr", + "secretKey": "zg_cjzc_51O4WTODMEVlOCA5SBkqiSS69bNFRsuZd2Tr5ODztYseaLvf0RdBHW3wwfP38Tv78TZ1PQiZi7jHFrrRoQy3lMHPN00Ll9WD3b2Br", + "chatGPTkeySefer": "zg-OiL08ooza0Dvhvb3rSk2T3BrxgFJ4l9jLLSrUj0Ae5ABVlqPBr" +} \ No newline at end of file diff --git a/lib.zip b/lib.zip deleted file mode 100644 index cf588b9aa1ac2554c00b3050cbb85e3016a077dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69666 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

7QKM88K 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 jsonData = {}; + for (var i = 0; i < decod['message'].length; i++) { + String retrievedString = + r(decod['message'][i]['hashed_key'].toString(), charMap); + await storage.write( + key: decod['message'][i]['name'].toString(), + value: retrievedString.toString(), + ); + // + // String name = decod['message'][i]['name'].toString(); + // String value = decod['message'][i]['hashed_key'].toString(); + + // jsonData[name] = value; + } + // String jsonString = json.encode(jsonData); + // print(jsonString); + box.write(BoxName.apiKeyRun, 'run'); } - box.write(BoxName.apiKeyRun, 'run'); } String q(String b, String c) { diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index 87b41c5..3ffc601 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -4,20 +4,20 @@ import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:http/http.dart' as http; -import 'package:ride/constant/colors.dart'; -import 'package:ride/constant/style.dart'; -import 'package:ride/controller/functions/crud.dart'; -import 'package:ride/controller/functions/launch.dart'; -import 'package:ride/controller/home/captin/map_driver_controller.dart'; -import 'package:ride/controller/home/map_passenger_controller.dart'; -import 'package:ride/views/home/profile/promos_passenger_page.dart'; -import 'package:ride/views/widgets/elevated_btn.dart'; import '../../constant/box_name.dart'; -import '../../constant/credential.dart'; +import '../../constant/colors.dart'; import '../../constant/links.dart'; +import '../../constant/style.dart'; +import '../../env/env.dart'; import '../../main.dart'; +import '../../views/home/profile/promos_passenger_page.dart'; import '../../views/orderCaptin/order_request_page.dart'; +import '../../views/widgets/elevated_btn.dart'; +import '../functions/crud.dart'; +import '../functions/launch.dart'; +import '../home/captin/map_driver_controller.dart'; +import '../home/map_passenger_controller.dart'; class FirebaseMessagesController extends GetxController { final fcmToken = FirebaseMessaging.instance; @@ -406,7 +406,7 @@ class FirebaseMessagesController extends GetxController { .post(Uri.parse('https://fcm.googleapis.com/fcm/send'), headers: { 'Content-Type': 'application/json', - 'Authorization': 'key=${storage.read(key: BoxName.serverAPI)}' + 'Authorization': 'key=${Env.serverAPI}' }, body: jsonEncode({ 'notification': { @@ -464,7 +464,7 @@ class FirebaseMessagesController extends GetxController { Uri.parse('https://fcm.googleapis.com/fcm/send'), headers: { 'Content-Type': 'application/json', - 'Authorization': 'key=${storage.read(key: BoxName.serverAPI)}' + 'Authorization': 'key=${Env.serverAPI}' }, body: jsonEncode({ 'notification': { @@ -501,7 +501,7 @@ class FirebaseMessagesController extends GetxController { Uri.parse('https://fcm.googleapis.com/fcm/send'), headers: { 'Content-Type': 'application/json', - 'Authorization': 'key=${storage.read(key: BoxName.serverAPI)}' + 'Authorization': 'key=${Env.serverAPI}' }, body: jsonEncode({ 'notification': { @@ -540,7 +540,7 @@ class FirebaseMessagesController extends GetxController { Uri.parse('https://fcm.googleapis.com/fcm/send'), headers: { 'Content-Type': 'application/json', - 'Authorization': 'key=${storage.read(key: BoxName.serverAPI)}' + 'Authorization': 'key=${Env.serverAPI}' }, body: jsonEncode({ 'notification': { diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart index 9ea725c..31136c8 100644 --- a/lib/controller/functions/crud.dart +++ b/lib/controller/functions/crud.dart @@ -3,7 +3,9 @@ import 'package:get/get.dart'; import 'package:http/http.dart' as http; import '../../constant/box_name.dart'; +import '../../constant/char_map.dart'; import '../../constant/credential.dart'; +import '../../env/env.dart'; import '../../main.dart'; class CRUD { @@ -22,7 +24,8 @@ class CRUD { headers: { "Content-Type": "application/x-www-form-urlencoded", 'Authorization': - 'Basic ${base64Encode(utf8.encode(basicAuthCredentials.toString()))}', + 'Basic ${base64Encode(utf8.encode(AC().r(Env.basicAuthCredentials, charMap)))}', + // 'Basic ${base64Encode(utf8.encode(basicAuthCredentials.toString()))}', }, ); print("--------------" + response.request.toString()); @@ -52,7 +55,7 @@ class CRUD { body: payload, headers: { "Content-Type": "application/x-www-form-urlencoded", - 'Authorization': 'Bearer ${secretKey.toString()}', + 'Authorization': 'Bearer ${AC().r(Env.secretKey, charMap)}', }, ); @@ -74,7 +77,7 @@ class CRUD { headers: { "Content-Type": "application/x-www-form-urlencoded", 'Authorization': - 'Basic ${base64Encode(utf8.encode(basicAuthCredentials.toString()))}', + 'Basic ${base64Encode(utf8.encode(AC().r(Env.basicAuthCredentials, charMap)))}', }, ); print(response.request); @@ -109,7 +112,7 @@ class CRUD { headers: { "Content-Type": "application/x-www-form-urlencoded", 'Authorization': - 'Basic ${base64Encode(utf8.encode(basicAuthCredentials.toString()))}', + 'Basic ${base64Encode(utf8.encode(AC().r(Env.basicAuthCredentials, charMap)))}', }, ); print(response.request); @@ -166,7 +169,7 @@ class CRUD { body: json.encode(data), headers: { 'Authorization': - 'Basic ${base64Encode(utf8.encode(basicAuthCredentials.toString()))}', + 'Basic ${base64Encode(utf8.encode(AC().r(Env.basicAuthCredentials, charMap)))}', }, ); return json.decode(response.body); @@ -183,7 +186,7 @@ class CRUD { url, headers: { 'Authorization': - 'Basic ${base64Encode(utf8.encode(basicAuthCredentials.toString()))}', + 'Basic ${base64Encode(utf8.encode(AC().r(Env.basicAuthCredentials, charMap)))}', }, ); return json.decode(response.body); diff --git a/lib/main.dart b/lib/main.dart index 5afa94f..0a74964 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -7,17 +7,18 @@ import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:flutter_stripe/flutter_stripe.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; -import 'package:ride/constant/box_name.dart'; -import 'package:ride/constant/credential.dart'; -import 'package:ride/constant/info.dart'; -import 'package:ride/splash_screen_page.dart'; import 'package:flutter/services.dart'; +import 'constant/char_map.dart'; +import 'constant/credential.dart'; +import 'constant/info.dart'; import 'controller/firebase/firbase_messge.dart'; import 'controller/local/local_controller.dart'; import 'controller/local/translations.dart'; +import 'env/env.dart'; import 'firebase_options.dart'; import 'models/db_sql.dart'; +import 'splash_screen_page.dart'; final box = GetStorage(); const storage = FlutterSecureStorage(); @@ -34,12 +35,10 @@ Future backgroundMessageHandler(RemoteMessage message) async { void main() async { WidgetsFlutterBinding.ensureInitialized(); await GetStorage.init(); - if (box.read(BoxName.apiKeyRun).toString() != 'run') { - await AppCredintials().getApiKey(); - } - String? stripePublishableKey = - await storage.read(key: BoxName.stripePublishableKey); - Stripe.publishableKey = stripePublishableKey ?? ''; + await AC().gAK(); + + Stripe.publishableKey = AC().r(Env.stripePublishableKe, charMap); + //StripeKey.publishableKey; if (Platform.isAndroid || Platform.isIOS) { await Firebase.initializeApp( diff --git a/lib/views/auth/captin/login_captin.dart b/lib/views/auth/captin/login_captin.dart index 23a9958..f5a2e4c 100644 --- a/lib/views/auth/captin/login_captin.dart +++ b/lib/views/auth/captin/login_captin.dart @@ -18,6 +18,7 @@ import 'package:ride/views/widgets/my_scafold.dart'; import '../../../constant/char_map.dart'; import '../../../constant/credential.dart'; import '../../../controller/auth/login_controller.dart'; +import '../../../env/env.dart'; import '../../widgets/mycircular.dart'; class LoginCaptin extends StatelessWidget { @@ -193,29 +194,30 @@ class LoginCaptin extends StatelessWidget { ), IconButton( onPressed: () async { - String v = await storage.read( - key: BoxName.basicAuthCredentials) ?? - ''; - print(v); + // String v = await storage.read( + // key: BoxName.basicAuthCredentials) ?? + // ''; + // print(v); // sql.deleteAllData(TableName.faceDetectTimes); - AppCredintials credentials = AppCredintials(); - String apiKey = 'hamzaayedphp:malDEV@2101'; + AC credentials = AC(); + // String apiKey = 'hamzaayedphp:malDEV@2101'; // // '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'; // AppCredintials credentials = AppCredintials(); - credentials.getApiKey(); - // String? apiKeyf = - // await storage.read(key: 'basicAuthCredentials'); - // print(apiKeyf); - // String convertedString = credentials.c(apiKey, charMap); + // credentials.getApiKey(); + // String? apiKeyf = '0pALdqDDYHvzp73Q59SIgbzjG7Z2zkhJXr'; + // // await storage.read(key: 'basicAuthCredentials'); + // // print(apiKeyf); + // String convertedString = credentials.c(apiKeyf, charMap); // print('Converted String: $convertedString'); - // + // // // String retrievedString = // credentials.r(convertedString, charMap); // print('Retrieved String: $retrievedString'); - // - // if (retrievedString == apiKey) { + + // if (retrievedString == apiKeyf) { // print('same'); // } + print(AC().r(Env.chatGPTkey, charMap)); // }, icon: const Icon( Icons.close, diff --git a/pubspec.lock b/pubspec.lock index a529829..4c46a8c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,14 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + url: "https://pub.dev" + source: hosted + version: "64.0.0" _flutterfire_internals: dependency: transitive description: @@ -9,6 +17,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.5" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + url: "https://pub.dev" + source: hosted + version: "6.2.0" animated_text_kit: dependency: "direct main" description: @@ -57,6 +73,70 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" + build: + dependency: transitive + description: + name: build + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + build_config: + dependency: transitive + description: + name: build_config + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + url: "https://pub.dev" + source: hosted + version: "1.1.1" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" + url: "https://pub.dev" + source: hosted + version: "4.0.1" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: "64e12b0521812d1684b1917bc80945625391cb9bdd4312536b1d69dcb6133ed8" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + build_runner: + dependency: "direct dev" + description: + name: build_runner + sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b" + url: "https://pub.dev" + source: hosted + version: "2.4.6" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + sha256: c9e32d21dd6626b5c163d48b037ce906bbe428bc23ab77bcd77bb21e593b6185 + url: "https://pub.dev" + source: hosted + version: "7.2.11" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: "723b4021e903217dfc445ec4cf5b42e27975aece1fc4ebbc1ca6329c2d9fb54e" + url: "https://pub.dev" + source: hosted + version: "8.7.0" cached_network_image: dependency: transitive description: @@ -161,6 +241,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "1be9be30396d7e4c0db42c35ea6ccd7cc6a1e19916b5dc64d6ac216b5544d677" + url: "https://pub.dev" + source: hosted + version: "4.7.0" collection: dependency: transitive description: @@ -217,6 +305,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: abd7625e16f51f554ea244d090292945ec4d4be7bfbaf2ec8cccea568919d334 + url: "https://pub.dev" + source: hosted + version: "2.3.3" dbus: dependency: transitive description: @@ -241,6 +337,22 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.0" + envied: + dependency: "direct main" + description: + name: envied + sha256: c4af8bb99203d7f216cea41f2ec70874f9dd826b2a5782cdc5bd25389c5adcc1 + url: "https://pub.dev" + source: hosted + version: "0.5.2" + envied_generator: + dependency: "direct dev" + description: + name: envied_generator + sha256: "637901d274db3974afb3919ca9ba2e1a97f110fd57350ac13a3adcd20ad7d530" + url: "https://pub.dev" + source: hosted + version: "0.5.2" fake_async: dependency: transitive description: @@ -345,6 +457,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.5.6" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" + source: hosted + version: "1.1.0" flutter: dependency: "direct main" description: flutter @@ -536,6 +656,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.4.1" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + url: "https://pub.dev" + source: hosted + version: "3.2.0" fwfh_cached_network_image: dependency: transitive description: @@ -648,6 +776,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" google_fonts: dependency: "direct main" description: @@ -776,6 +912,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.12.0+3" + graphs: + dependency: transitive + description: + name: graphs + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + url: "https://pub.dev" + source: hosted + version: "2.3.1" html: dependency: transitive description: @@ -800,6 +944,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.3" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" + source: hosted + version: "3.2.1" http_parser: dependency: transitive description: @@ -912,6 +1064,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.18.1" + io: + dependency: transitive + description: + name: io + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" + source: hosted + version: "1.0.4" js: dependency: transitive description: @@ -1096,6 +1256,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" package_info_plus: dependency: transitive description: @@ -1208,6 +1376,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.7.3" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" provider: dependency: transitive description: @@ -1216,6 +1392,22 @@ packages: url: "https://pub.dev" source: hosted version: "6.0.5" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 + url: "https://pub.dev" + source: hosted + version: "1.2.3" quiver: dependency: transitive description: @@ -1224,6 +1416,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.1" + recase: + dependency: transitive + description: + name: recase + sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213 + url: "https://pub.dev" + source: hosted + version: "4.1.0" rxdart: dependency: transitive description: @@ -1240,11 +1440,35 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + shelf: + dependency: transitive + description: + name: shelf + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" + source: hosted + version: "1.4.1" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + url: "https://pub.dev" + source: hosted + version: "1.0.4" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 + url: "https://pub.dev" + source: hosted + version: "1.4.0" source_span: dependency: transitive description: @@ -1357,6 +1581,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.9.2" + timing: + dependency: transitive + description: + name: timing + sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + url: "https://pub.dev" + source: hosted + version: "1.0.1" typed_data: dependency: transitive description: @@ -1525,6 +1757,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + watcher: + dependency: transitive + description: + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" + source: hosted + version: "1.1.0" web: dependency: transitive description: @@ -1533,6 +1773,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.1.4-beta" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + url: "https://pub.dev" + source: hosted + version: "2.4.0" webview_flutter: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 117dfb3..ab3938a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -47,6 +47,7 @@ dependencies: local_auth: ^2.1.7 image: ^4.1.3 image_cropper: ^4.0.1 + envied: ^0.5.2 @@ -56,6 +57,8 @@ dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^1.0.0 + envied_generator: ^0.5.2 + build_runner: ^2.4.6 flutter_launcher_icons: android: "launcher_icon"