From adb5bb30a4f1729ebe672b59a5d6341b1a44b833 Mon Sep 17 00:00:00 2001 From: awaik Date: Mon, 12 Feb 2024 21:51:31 +0700 Subject: [PATCH] feat: update payment methods icons --- Makefile | 4 + assets/banks/GOLDBACK.svg | 1 + assets/banks/NEOSURF.svg | 19 ++ assets/banks/SOFI_P2P.svg | 1 + assets/banks/ZEN.svg | 4 + ios/Podfile.lock | 52 ++--- .../packages/socks_proxy/http_headers.dart | 114 +++------- .../foreground/foreground_handler.dart | 21 +- .../translations/payment_method_mixin.dart | 2 + lib/features/ads/screens/ads_screen.dart | 4 +- .../ads/screens/widgets/post_ad_step_2.dart | 4 +- lib/features/main/main_screen.dart | 22 +- .../market/screens/market_screen.dart | 6 +- .../trades/screens/trades_screen.dart | 4 +- macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 214 +++++++++++++----- pubspec.yaml | 198 ++++++++-------- 17 files changed, 368 insertions(+), 304 deletions(-) create mode 100644 assets/banks/GOLDBACK.svg create mode 100644 assets/banks/NEOSURF.svg create mode 100644 assets/banks/SOFI_P2P.svg create mode 100644 assets/banks/ZEN.svg diff --git a/Makefile b/Makefile index f22e6ae0..b5868eaa 100644 --- a/Makefile +++ b/Makefile @@ -183,3 +183,7 @@ l10n: .PHONY: l10n-sync l10n-sync: ./scripts/update-l10n.sh $(LOCALISE_KEY) + +.PHONY: yaml-sort +yaml-sort: + flutter pub run pubspec_dependency_sorter diff --git a/assets/banks/GOLDBACK.svg b/assets/banks/GOLDBACK.svg new file mode 100644 index 00000000..f71fe9c1 --- /dev/null +++ b/assets/banks/GOLDBACK.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/banks/NEOSURF.svg b/assets/banks/NEOSURF.svg new file mode 100644 index 00000000..83409ee0 --- /dev/null +++ b/assets/banks/NEOSURF.svg @@ -0,0 +1,19 @@ + + + + + + diff --git a/assets/banks/SOFI_P2P.svg b/assets/banks/SOFI_P2P.svg new file mode 100644 index 00000000..77a07fc3 --- /dev/null +++ b/assets/banks/SOFI_P2P.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/banks/ZEN.svg b/assets/banks/ZEN.svg new file mode 100644 index 00000000..b3d15b8e --- /dev/null +++ b/assets/banks/ZEN.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock index a491e674..d0de4ffb 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -8,33 +8,33 @@ PODS: - ReachabilitySwift - device_info_plus (0.0.1): - Flutter - - Firebase/CoreOnly (10.10.0): - - FirebaseCore (= 10.10.0) - - Firebase/Messaging (10.10.0): + - Firebase/CoreOnly (10.20.0): + - FirebaseCore (= 10.20.0) + - Firebase/Messaging (10.20.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 10.10.0) - - firebase_core (2.14.0): - - Firebase/CoreOnly (= 10.10.0) + - FirebaseMessaging (~> 10.20.0) + - firebase_core (2.25.4): + - Firebase/CoreOnly (= 10.20.0) - Flutter - - firebase_messaging (14.6.4): - - Firebase/Messaging (= 10.10.0) + - firebase_messaging (14.7.15): + - Firebase/Messaging (= 10.20.0) - firebase_core - Flutter - - FirebaseCore (10.10.0): + - FirebaseCore (10.20.0): - FirebaseCoreInternal (~> 10.0) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/Logger (~> 7.8) - - FirebaseCoreInternal (10.18.0): + - GoogleUtilities/Environment (~> 7.12) + - GoogleUtilities/Logger (~> 7.12) + - FirebaseCoreInternal (10.21.0): - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseInstallations (10.18.0): + - FirebaseInstallations (10.21.0): - FirebaseCore (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - - FirebaseMessaging (10.10.0): + - FirebaseMessaging (10.20.0): - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - - GoogleDataTransport (~> 9.2) + - GoogleDataTransport (~> 9.3) - GoogleUtilities/AppDelegateSwizzler (~> 7.8) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/Reachability (~> 7.8) @@ -222,26 +222,26 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: barcode_scan2: 0af2bb63c81b4565aab6cd78278e4c0fa136dbb0 - connectivity_plus: 07c49e96d7fc92bc9920617b83238c4d178b446a + connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d device_info_plus: 7545d84d8d1b896cb16a4ff98c19f07ec4b298ea - Firebase: facd334e557a979bd03a0b58d90fd56b52b8aba0 - firebase_core: 85b6664038311940ad60584eaabc73103c61f5de - firebase_messaging: c55f70dd48a998dea00a29ccf94572e1e4d454b2 - FirebaseCore: d027ff503d37edb78db98429b11f580a24a7df2a - FirebaseCoreInternal: 8eb002e564b533bdcf1ba011f33f2b5c10e2ed4a - FirebaseInstallations: e842042ec6ac1fd2e37d7706363ebe7f662afea4 - FirebaseMessaging: 8a3b9a8b98ce72a42d22e69865cf662e38d2d6f5 + Firebase: 10c8cb12fb7ad2ae0c09ffc86cd9c1ab392a0031 + firebase_core: a46c312d8bae4defa3d009b2aa7b5b413aeb394e + firebase_messaging: 40d7dd2f3e88a6367c7326cf601f84633d477582 + FirebaseCore: 28045c1560a2600d284b9c45a904fe322dc890b6 + FirebaseCoreInternal: 43c1788eaeee9d1b97caaa751af567ce11010d00 + FirebaseInstallations: 390ea1d10a4d02b20c965cbfd527ee9b3b412acb + FirebaseMessaging: 06c414a21b122396a26847c523d5c370f8325df5 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_app_badger: b87fc231847b03b92ce1412aa351842e7e97932f flutter_foreground_task: 21ef182ab0a29a3005cc72cd70e5f45cb7f7f817 flutter_inappwebview_ios: 97215cf7d4677db55df76782dbd2930c5e1c1ea0 flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 - flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 + flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a GoogleDataTransport: 57c22343ab29bc686febbf7cbb13bad167c2d8fe GoogleUtilities: 0759d1a57ebb953965c2dfe0ba4c82e95ccc2e34 - image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5 + image_picker_ios: 99dfe1854b4fa34d0364e74a78448a0151025425 local_auth_ios: c6cf091ded637a88f24f86a8875d8b0f526e2605 MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5 @@ -264,4 +264,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 665b9460f3856aecb9da49710ba7bb5d1feb9d84 -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.2 diff --git a/lib/core/packages/socks_proxy/http_headers.dart b/lib/core/packages/socks_proxy/http_headers.dart index 36b35654..7a68e716 100644 --- a/lib/core/packages/socks_proxy/http_headers.dart +++ b/lib/core/packages/socks_proxy/http_headers.dart @@ -22,8 +22,7 @@ class _HttpHeaders implements HttpHeaders { final int _defaultPortForScheme; _HttpHeaders(this.protocolVersion, - {int defaultPortForScheme = HttpClient.defaultHttpPort, - _HttpHeaders? initialHeaders}) + {int defaultPortForScheme = HttpClient.defaultHttpPort, _HttpHeaders? initialHeaders}) : _headers = HashMap>(), _defaultPortForScheme = defaultPortForScheme { if (initialHeaders != null) { @@ -139,8 +138,7 @@ class _HttpHeaders implements HttpHeaders { remove(HttpHeaders.connectionHeader, "close"); } else { if (_contentLength < 0) { - throw HttpException( - "Trying to set 'Connection: Keep-Alive' on HTTP 1.0 headers with " + throw HttpException("Trying to set 'Connection: Keep-Alive' on HTTP 1.0 headers with " "no ContentLength"); } add(originalName, "keep-alive", preserveHeaderCase: true); @@ -159,11 +157,8 @@ class _HttpHeaders implements HttpHeaders { void set contentLength(int contentLength) { _checkMutable(); - if (protocolVersion == "1.0" && - persistentConnection && - contentLength == -1) { - throw HttpException( - "Trying to clear ContentLength on HTTP 1.0 headers with " + if (protocolVersion == "1.0" && persistentConnection && contentLength == -1) { + throw HttpException("Trying to clear ContentLength on HTTP 1.0 headers with " "'Connection: Keep-Alive' set"); } if (_contentLength == contentLength) return; @@ -181,11 +176,10 @@ class _HttpHeaders implements HttpHeaders { bool get chunkedTransferEncoding => _chunkedTransferEncoding; - void set chunkedTransferEncoding(bool chunkedTransferEncoding) { + set chunkedTransferEncoding(bool chunkedTransferEncoding) { _checkMutable(); if (chunkedTransferEncoding && protocolVersion == "1.0") { - throw HttpException( - "Trying to set 'Transfer-Encoding: Chunked' on HTTP 1.0 headers"); + throw HttpException("Trying to set 'Transfer-Encoding: Chunked' on HTTP 1.0 headers"); } if (chunkedTransferEncoding == _chunkedTransferEncoding) return; if (chunkedTransferEncoding) { @@ -514,9 +508,7 @@ class _HttpHeaders implements HttpHeaders { // Content-Length header field when the request message does not // contain a payload body and the method semantics do not anticipate // such a body. - String? ignoreHeader = _contentLength == 0 && skipZeroContentLength - ? HttpHeaders.contentLengthHeader - : null; + String? ignoreHeader = _contentLength == 0 && skipZeroContentLength ? HttpHeaders.contentLengthHeader : null; _headers.forEach((String name, List values) { if (ignoreHeader == name) { return; @@ -650,8 +642,7 @@ class _HttpHeaders implements HttpHeaders { static String _validateField(String field) { for (var i = 0; i < field.length; i++) { if (!_HttpParser._isTokenChar(field.codeUnitAt(i))) { - throw FormatException( - "Invalid HTTP header field name: ${json.encode(field)}", field, i); + throw FormatException("Invalid HTTP header field name: ${json.encode(field)}", field, i); } } return field.toLowerCase(); @@ -661,8 +652,7 @@ class _HttpHeaders implements HttpHeaders { if (value is! String) return value; for (var i = 0; i < (value).length; i++) { if (!_HttpParser._isValueChar((value).codeUnitAt(i))) { - throw FormatException( - "Invalid HTTP header field value: ${json.encode(value)}", value, i); + throw FormatException("Invalid HTTP header field value: ${json.encode(value)}", value, i); } } return value; @@ -681,15 +671,13 @@ class _HeaderValue implements HeaderValue { _HeaderValue([this._value = "", Map parameters = const {}]) { // TODO(40614): Remove once non-nullability is sound. Map? nullableParameters = parameters; - if (nullableParameters != null && nullableParameters.isNotEmpty) { + if (nullableParameters.isNotEmpty) { _parameters = HashMap.from(nullableParameters); } } static _HeaderValue parse(String value, - {String parameterSeparator = ";", - String? valueSeparator, - bool preserveBackslash = false}) { + {String parameterSeparator = ";", String? valueSeparator, bool preserveBackslash = false}) { // Parse the string. var result = _HeaderValue(); result._parse(value, parameterSeparator, valueSeparator, preserveBackslash); @@ -698,11 +686,9 @@ class _HeaderValue implements HeaderValue { String get value => _value; - Map _ensureParameters() => - _parameters ??= {}; + Map _ensureParameters() => _parameters ??= {}; - Map get parameters => - _unmodifiableParameters ??= UnmodifiableMapView(_ensureParameters()); + Map get parameters => _unmodifiableParameters ??= UnmodifiableMapView(_ensureParameters()); static bool _isToken(String token) { if (token.isEmpty) { @@ -737,8 +723,7 @@ class _HeaderValue implements HeaderValue { for (int i = 0; i < value.length; i++) { // Can use codeUnitAt here instead. int codeUnit = value.codeUnitAt(i); - if (codeUnit == 92 /* backslash */ || - codeUnit == 34 /* double quote */) { + if (codeUnit == 92 /* backslash */ || codeUnit == 34 /* double quote */) { sb.write(value.substring(start, i)); sb.write(r'\'); start = i; @@ -754,8 +739,7 @@ class _HeaderValue implements HeaderValue { return sb.toString(); } - void _parse(String s, String parameterSeparator, String? valueSeparator, - bool preserveBackslash) { + void _parse(String s, String parameterSeparator, String? valueSeparator, bool preserveBackslash) { int index = 0; bool done() => index == s.length; @@ -771,10 +755,7 @@ class _HeaderValue implements HeaderValue { int start = index; while (!done()) { var char = s[index]; - if (char == " " || - char == "\t" || - char == valueSeparator || - char == parameterSeparator) break; + if (char == " " || char == "\t" || char == valueSeparator || char == parameterSeparator) break; index++; } return s.substring(start, index); @@ -802,11 +783,7 @@ class _HeaderValue implements HeaderValue { int start = index; while (!done()) { var char = s[index]; - if (char == " " || - char == "\t" || - char == "=" || - char == parameterSeparator || - char == valueSeparator) break; + if (char == " " || char == "\t" || char == "=" || char == parameterSeparator || char == valueSeparator) break; index++; } return s.substring(start, index).toLowerCase(); @@ -880,8 +857,7 @@ class _ContentType extends _HeaderValue implements ContentType { String _primaryType = ""; String _subType = ""; - _ContentType(String primaryType, String subType, String? charset, - Map parameters) + _ContentType(String primaryType, String subType, String? charset, Map parameters) : _primaryType = primaryType, _subType = subType, super("") { @@ -916,8 +892,7 @@ class _ContentType extends _HeaderValue implements ContentType { if (index == -1 || index == (result._value.length - 1)) { result._primaryType = result._value.trim().toLowerCase(); } else { - result._primaryType = - result._value.substring(0, index).trim().toLowerCase(); + result._primaryType = result._value.substring(0, index).trim().toLowerCase(); result._subType = result._value.substring(index + 1).trim().toLowerCase(); } return result; @@ -1085,35 +1060,12 @@ class _Cookie implements Cookie { } static String _validateName(String newName) { - const separators = [ - "(", - ")", - "<", - ">", - "@", - ",", - ";", - ":", - "\\", - '"', - "/", - "[", - "]", - "?", - "=", - "{", - "}" - ]; + const separators = ["(", ")", "<", ">", "@", ",", ";", ":", "\\", '"', "/", "[", "]", "?", "=", "{", "}"]; if (newName == null) throw ArgumentError.notNull("name"); for (int i = 0; i < newName.length; i++) { int codeUnit = newName.codeUnitAt(i); - if (codeUnit <= 32 || - codeUnit >= 127 || - separators.contains(newName[i])) { - throw FormatException( - "Invalid character in cookie name, code unit: '$codeUnit'", - newName, - i); + if (codeUnit <= 32 || codeUnit >= 127 || separators.contains(newName[i])) { + throw FormatException("Invalid character in cookie name, code unit: '$codeUnit'", newName, i); } } return newName; @@ -1125,9 +1077,7 @@ class _Cookie implements Cookie { // double quotes are not allowed. int start = 0; int end = newValue.length; - if (2 <= newValue.length && - newValue.codeUnits[start] == 0x22 && - newValue.codeUnits[end - 1] == 0x22) { + if (2 <= newValue.length && newValue.codeUnits[start] == 0x22 && newValue.codeUnits[end - 1] == 0x22) { start++; end--; } @@ -1139,10 +1089,7 @@ class _Cookie implements Cookie { (codeUnit >= 0x2D && codeUnit <= 0x3A) || (codeUnit >= 0x3C && codeUnit <= 0x5B) || (codeUnit >= 0x5D && codeUnit <= 0x7E))) { - throw FormatException( - "Invalid character in cookie value, code unit: '$codeUnit'", - newValue, - i); + throw FormatException("Invalid character in cookie value, code unit: '$codeUnit'", newValue, i); } } return newValue; @@ -1157,8 +1104,7 @@ class _Cookie implements Cookie { // path-value = // CTLs = %x00-1F / %x7F if (codeUnit < 0x20 || codeUnit >= 0x7f || codeUnit == 0x3b /*;*/) { - throw FormatException( - "Invalid character in cookie path, code unit: '$codeUnit'"); + throw FormatException("Invalid character in cookie path, code unit: '$codeUnit'"); } } } @@ -1251,18 +1197,12 @@ class _Cookie implements Cookie { dayOfMonthStr = token; } else if (monthStr == null && getMonth(token) >= 0) { monthStr = token; - } else if (yearStr == null && - token.length >= 2 && - isDigit(token[0]) && - isDigit(token[1])) { + } else if (yearStr == null && token.length >= 2 && isDigit(token[0]) && isDigit(token[1])) { yearStr = token; } } - if (timeStr == null || - dayOfMonthStr == null || - monthStr == null || - yearStr == null) { + if (timeStr == null || dayOfMonthStr == null || monthStr == null || yearStr == null) { error(); } diff --git a/lib/core/services/foreground/foreground_handler.dart b/lib/core/services/foreground/foreground_handler.dart index 31f1e9c9..e4a6073e 100644 --- a/lib/core/services/foreground/foreground_handler.dart +++ b/lib/core/services/foreground/foreground_handler.dart @@ -21,12 +21,12 @@ class ForegroundHandler extends TaskHandler with ForegroundMessagesMixin, UrlMix } @override - Future onEvent(DateTime timestamp, SendPort? sendPort) async { + Future onRepeatEvent(DateTime timestamp, SendPort? sendPort) async { await SecureStorage.ensureInitialized(); - final SecureStorage _secureStorage = SecureStorage(); - final token = await _secureStorage.read(SecureStorageKey.token); - final openedTradeId = await _secureStorage.read(SecureStorageKey.openedTradeId); - final String? lastNotificationTimeInt = await _secureStorage.read(SecureStorageKey.lastNotificationTimeInt); + final SecureStorage secureStorage = SecureStorage(); + final token = await secureStorage.read(SecureStorageKey.token); + final openedTradeId = await secureStorage.read(SecureStorageKey.openedTradeId); + final String? lastNotificationTimeInt = await secureStorage.read(SecureStorageKey.lastNotificationTimeInt); if (token != null && token.isNotEmpty) { Map headers = { 'Authorization': token, @@ -40,7 +40,7 @@ class ForegroundHandler extends TaskHandler with ForegroundMessagesMixin, UrlMix debugPrint(e.toString()); } } else { - await _secureStorage.write( + await secureStorage.write( SecureStorageKey.lastNotificationTimeInt, DateTime.now().toUtc().millisecondsSinceEpoch.toString()); } final resp = await http.get( @@ -56,7 +56,7 @@ class ForegroundHandler extends TaskHandler with ForegroundMessagesMixin, UrlMix notifications.add(ActivityNotificationModel.fromJson(r)); } if (notifications.isNotEmpty) { - await _secureStorage.write(SecureStorageKey.lastNotificationTimeInt, + await secureStorage.write(SecureStorageKey.lastNotificationTimeInt, notifications.first.createdAt.millisecondsSinceEpoch.toString()); final ActivityNotificationModel notification = notifications.first; final PushModel push = PushModel.fromActivityNotificationModel(notification); @@ -67,8 +67,9 @@ class ForegroundHandler extends TaskHandler with ForegroundMessagesMixin, UrlMix } } } else { - if (GetIt.I().debugPrintIsOn) + if (GetIt.I().debugPrintIsOn) { debugPrint('++++error getting foreground notifications - ${resp.statusCode} - ${resp.body}'); + } } } } @@ -76,9 +77,7 @@ class ForegroundHandler extends TaskHandler with ForegroundMessagesMixin, UrlMix @override Future onDestroy(DateTime timestamp, SendPort? sendPort) async {} - @override - void onButtonPressed(String id) {} - @override void onNotificationPressed() {} + } diff --git a/lib/core/translations/payment_method_mixin.dart b/lib/core/translations/payment_method_mixin.dart index aa301f71..3638cd7e 100644 --- a/lib/core/translations/payment_method_mixin.dart +++ b/lib/core/translations/payment_method_mixin.dart @@ -21,6 +21,8 @@ mixin PaymentMethodsMixin { Widget getPaymentMethodIcon(BuildContext context, String code, {double size = 14}) { try { + if (code.isEmpty) return const SizedBox(); + return SvgPicture.asset( 'assets/banks/$code.svg', height: size, diff --git a/lib/features/ads/screens/ads_screen.dart b/lib/features/ads/screens/ads_screen.dart index c0fa7fe1..e5c1ae2c 100644 --- a/lib/features/ads/screens/ads_screen.dart +++ b/lib/features/ads/screens/ads_screen.dart @@ -684,7 +684,7 @@ class _AdsScreenState extends State with TickerProviderStateMixin, Co itemBuilder: (context, val, isSelected) { return DropdownAssetLineWithIcon( name: val?.name ?? '', - svgPath: val?.code == null ? null : 'assets/banks/${val!.code}.svg', + svgPath: val?.code.isNotEmpty == true ? 'assets/banks/${val!.code}.svg' : null, ); }, ), @@ -695,7 +695,7 @@ class _AdsScreenState extends State with TickerProviderStateMixin, Co dropdownBuilder: (context, val) { return DropdownAssetLineWithIcon( name: val?.name ?? '', - svgPath: val?.code == null ? null : 'assets/banks/${val!.code}.svg', + svgPath: val?.code.isNotEmpty == true ? 'assets/banks/${val!.code}.svg' : null, padding: const EdgeInsets.all(0), ); }, diff --git a/lib/features/ads/screens/widgets/post_ad_step_2.dart b/lib/features/ads/screens/widgets/post_ad_step_2.dart index 13fbb63d..868dc3f4 100644 --- a/lib/features/ads/screens/widgets/post_ad_step_2.dart +++ b/lib/features/ads/screens/widgets/post_ad_step_2.dart @@ -144,7 +144,7 @@ class PostAdStep2 extends StatelessWidget with CountryInfoMixin, PaymentMethodsM itemBuilder: (context, val, isSelected) { return DropdownAssetLineWithIcon( name: val?.name ?? '', - svgPath: val?.code == null ? null : 'assets/banks/${val!.code}.svg', + svgPath: val?.code.isNotEmpty == true ? 'assets/banks/${val!.code}.svg' : null, ); }, ), @@ -154,7 +154,7 @@ class PostAdStep2 extends StatelessWidget with CountryInfoMixin, PaymentMethodsM dropdownBuilder: (context, val) { return DropdownAssetLineWithIcon( name: val?.name ?? '', - svgPath: val?.code == null ? null : 'assets/banks/${val!.code}.svg', + svgPath: val?.code.isNotEmpty == true ? 'assets/banks/${val!.code}.svg' : null, padding: const EdgeInsets.all(0), ); }, diff --git a/lib/features/main/main_screen.dart b/lib/features/main/main_screen.dart index 47cf2343..ce66cf22 100644 --- a/lib/features/main/main_screen.dart +++ b/lib/features/main/main_screen.dart @@ -125,7 +125,7 @@ class _MainScreenState extends State { _ambiguate(WidgetsBinding.instance)?.addPostFrameCallback((_) async { // You can get the previous ReceivePort without restarting the service. if (await FlutterForegroundTask.isRunningService) { - final newReceivePort = await FlutterForegroundTask.receivePort; + final newReceivePort = FlutterForegroundTask.receivePort; _registerReceivePort(newReceivePort); } }); @@ -134,13 +134,9 @@ class _MainScreenState extends State { } Future _initForegroundTask() async { - int pollingInterval = kForegroungPollingInterval; + const int pollingInterval = kDebugMode ? 15000 : kForegroungPollingInterval; - if (kDebugMode) { - pollingInterval = 15000; - } - - await FlutterForegroundTask.init( + FlutterForegroundTask.init( androidNotificationOptions: AndroidNotificationOptions( channelId: 'foreground_notifications', channelName: 'Foreground notifications', @@ -156,12 +152,12 @@ class _MainScreenState extends State { visibility: NotificationVisibility.VISIBILITY_PRIVATE, enableVibration: false, ), - foregroundTaskOptions: ForegroundTaskOptions( + foregroundTaskOptions: const ForegroundTaskOptions( interval: pollingInterval, autoRunOnBoot: true, allowWifiLock: true, ), - printDevLog: false, + iosNotificationOptions: const IOSNotificationOptions(), ); } @@ -171,17 +167,17 @@ class _MainScreenState extends State { await FlutterForegroundTask.restartService(); } else { await SecureStorage.ensureInitialized(); - final SecureStorage _secureStorage = SecureStorage(); - final String? l = await _secureStorage.read(SecureStorageKey.locale); + final SecureStorage secureStorage = SecureStorage(); + final String? l = await secureStorage.read(SecureStorageKey.locale); final langCode = l ?? Platform.localeName.substring(0, 2); await FlutterForegroundTask.startService( notificationTitle: - GetIt.I().appName + ' ' + ForegroundMessagesMixin.getChannelNameDescription(langCode)[0], + '${GetIt.I().appName} ${ForegroundMessagesMixin.getChannelNameDescription(langCode)[0]}', notificationText: ForegroundMessagesMixin.getChannelNameDescription(langCode)[1], callback: startCallback, ); } - receivePort = await FlutterForegroundTask.receivePort; + receivePort = FlutterForegroundTask.receivePort; return _registerReceivePort(receivePort); } diff --git a/lib/features/market/screens/market_screen.dart b/lib/features/market/screens/market_screen.dart index 9ea74763..e1cedfd7 100644 --- a/lib/features/market/screens/market_screen.dart +++ b/lib/features/market/screens/market_screen.dart @@ -180,7 +180,7 @@ class MarketScreen extends StatelessWidget with CountryInfoMixin, PaymentMethods itemBuilder: (context, val, isSelected) { return DropdownAssetLineWithIcon( name: val.name, - svgPath: 'assets/banks/${val.code}.svg', + svgPath: val.code.isNotEmpty == true ? 'assets/banks/${val.code}.svg' : null, ); }, ), @@ -189,8 +189,8 @@ class MarketScreen extends StatelessWidget with CountryInfoMixin, PaymentMethods selectedItem: model.selectedOnlineProvider, dropdownBuilder: (context, val) { return DropdownAssetLineWithIcon( - name: val!.name, - svgPath: 'assets/banks/${val.code}.svg', + name: val?.name ?? '', + svgPath: val?.code.isNotEmpty == true ? 'assets/banks/${val!.code}.svg' : null, padding: const EdgeInsets.all(0), ); }, diff --git a/lib/features/trades/screens/trades_screen.dart b/lib/features/trades/screens/trades_screen.dart index 230069db..a1b609a1 100644 --- a/lib/features/trades/screens/trades_screen.dart +++ b/lib/features/trades/screens/trades_screen.dart @@ -279,7 +279,7 @@ class _TradesScreenState extends State itemBuilder: (context, val, isSelected) { return DropdownAssetLineWithIcon( name: val?.name ?? '', - svgPath: val?.code == null ? null : 'assets/banks/${val!.code}.svg', + svgPath: val?.code.isNotEmpty == true ? 'assets/banks/${val!.code}.svg' : null, ); }, ), @@ -290,7 +290,7 @@ class _TradesScreenState extends State dropdownBuilder: (context, val) { return DropdownAssetLineWithIcon( name: val?.name ?? '', - svgPath: val?.code == null ? null : 'assets/banks/${val!.code}.svg', + svgPath: val?.code.isNotEmpty == true ? 'assets/banks/${val!.code}.svg' : null, padding: const EdgeInsets.all(0), ); }, diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index af490b40..be196cb2 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,6 +7,7 @@ import Foundation import connectivity_plus import device_info_plus +import file_selector_macos import firebase_core import firebase_messaging import flutter_app_badger @@ -25,6 +26,7 @@ import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) FlutterAppBadgerPlugin.register(with: registry.registrar(forPlugin: "FlutterAppBadgerPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 1f27a1a1..e4fec41c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -85,10 +85,10 @@ packages: dependency: "direct main" description: name: barcode_scan2 - sha256: "0b0625d27841a21e36e896195d86b2aada335e3c486f63647cce701495718e16" + sha256: "847ff88888213a3b2866d98839ee6d85e4da8002df83e7971d355d24d5f31c4c" url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "4.3.0" boolean_selector: dependency: transitive description: @@ -133,10 +133,10 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "220ae4553e50d7c21a17c051afc7b183d28a24a420502e842f303f8e4e6edced" + sha256: "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21" url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "2.4.8" build_runner_core: dependency: transitive description: @@ -165,26 +165,26 @@ packages: dependency: "direct main" description: name: cached_network_image - sha256: f98972704692ba679db144261172a8e20feb145636c617af0eb4022132a6797f + sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.3.1" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: "56aa42a7a01e3c9db8456d9f3f999931f1e05535b5a424271e9a38cabf066613" + sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "4.0.0" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: "759b9a9f8f6ccbb66c185df805fac107f05730b1dab9c64626d1008cca532257" + sha256: "42a835caa27c220d1294311ac409a43361088625a4f23c820b006dd9bffb3316" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" characters: dependency: transitive description: @@ -234,7 +234,7 @@ packages: source: hosted version: "4.4.0" collection: - dependency: "direct main" + dependency: transitive description: name: collection sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a @@ -470,10 +470,10 @@ packages: dependency: transitive description: name: ffi - sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.0" figma_squircle: dependency: "direct main" description: @@ -490,6 +490,38 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.4" + file_selector_linux: + dependency: transitive + description: + name: file_selector_linux + sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" + url: "https://pub.dev" + source: hosted + version: "0.9.2+1" + file_selector_macos: + dependency: transitive + description: + name: file_selector_macos + sha256: b15c3da8bd4908b9918111fa486903f5808e388b8d1c559949f584725a6594d6 + url: "https://pub.dev" + source: hosted + version: "0.9.3+3" + file_selector_platform_interface: + dependency: transitive + description: + name: file_selector_platform_interface + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + url: "https://pub.dev" + source: hosted + version: "2.6.2" + file_selector_windows: + dependency: transitive + description: + name: file_selector_windows + sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 + url: "https://pub.dev" + source: hosted + version: "0.9.3+1" firebase_core: dependency: "direct main" description: @@ -715,26 +747,26 @@ packages: dependency: "direct main" description: name: flutter_local_notifications - sha256: "293995f94e120c8afce768981bd1fa9c5d6de67c547568e3b42ae2defdcbb4a0" + sha256: c18f1de98fe0bb9dd5ba91e1330d4febc8b6a7de6aae3ffe475ef423723e72f3 url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "16.3.2" flutter_local_notifications_linux: dependency: transitive description: name: flutter_local_notifications_linux - sha256: ccb08b93703aeedb58856e5637450bf3ffec899adb66dc325630b68994734b89 + sha256: "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03" url: "https://pub.dev" source: hosted - version: "3.0.0+1" + version: "4.0.0+1" flutter_local_notifications_platform_interface: dependency: transitive description: name: flutter_local_notifications_platform_interface - sha256: "5ec1feac5f7f7d9266759488bc5f76416152baba9aa1b26fe572246caa00d1ab" + sha256: "7cf643d6d5022f3baed0be777b0662cce5919c0a7b86e700299f22dc4ae660ef" url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "7.0.0+1" flutter_localizations: dependency: "direct dev" description: flutter @@ -768,10 +800,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: b6cb0041c6c11cefb2dcb97ef436eba43c6d41287ac6d8ca93e02a497f53a4f3 + sha256: "4bce556b7ecbfea26109638d5237684538d4abc509d253e6c5c4c5733b360098" url: "https://pub.dev" source: hosted - version: "2.3.7" + version: "2.4.10" flutter_screenutil: dependency: "direct main" description: @@ -784,10 +816,10 @@ packages: dependency: "direct main" description: name: flutter_secure_storage - sha256: "98352186ee7ad3639ccc77ad7924b773ff6883076ab952437d20f18a61f0a7c5" + sha256: ffdbb60130e4665d2af814a0267c481bcf522c41ae2e43caf69fa0146876d685 url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "9.0.0" flutter_secure_storage_linux: dependency: transitive description: @@ -824,10 +856,10 @@ packages: dependency: transitive description: name: flutter_secure_storage_windows - sha256: fc2910ec9b28d60598216c29ea763b3a96c401f0ce1d13cdf69ccb0e5c93c3ee + sha256: "5809c66f9dd3b4b93b0a6e2e8561539405322ee767ac2f64d084e2ab5429d108" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.0.0" flutter_svg: dependency: "direct main" description: @@ -898,10 +930,26 @@ packages: dependency: "direct main" description: name: google_api_availability - sha256: a1f58c5213abae549fb1e1451bc68eb499da7033039f77bc289fd6faca384295 + sha256: "3e9548cfd991d983d11425a2436d5bd957d048c279cc9e145ffe3f36fd847385" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "5.0.0" + google_api_availability_android: + dependency: transitive + description: + name: google_api_availability_android + sha256: d95429ae78083585c312de2c6578085e7d53d100a94656d691bce0bb0ce435be + url: "https://pub.dev" + source: hosted + version: "1.0.1" + google_api_availability_platform_interface: + dependency: transitive + description: + name: google_api_availability_platform_interface + sha256: "65b7da62fe5b582bb3d508628ad827d36d890710ea274766a992a56fa5420da6" + url: "https://pub.dev" + source: hosted + version: "1.0.1" graphs: dependency: transitive description: @@ -986,34 +1034,50 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "9978d3510af4e6a902e545ce19229b926e6de6a1828d6134d3aab2e129a4d270" + sha256: "26222b01a0c9a2c8fe02fc90b8208bd3325da5ed1f4a2acabf75939031ac0bdd" url: "https://pub.dev" source: hosted - version: "0.8.7+5" + version: "1.0.7" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "89ba2aa6904d8180ca44fd5f5014523f02319101904e3e571fbe792e395b77ed" + sha256: "39f2bfe497e495450c81abcd44b62f56c2a36a37a175da7d137b4454977b51b1" url: "https://pub.dev" source: hosted - version: "0.8.6+14" + version: "0.8.9+3" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "98f50d6b9f294c8ba35e25cc0d13b04bfddd25dbc8d32fa9d566a6572f2c081c" + sha256: e2423c53a68b579a7c37a1eda967b8ae536c3d98518e5db95ca1fe5719a730a3 url: "https://pub.dev" source: hosted - version: "2.1.12" + version: "3.0.2" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: d779210bda268a03b57e923fb1e410f32f5c5e708ad256348bcbf1f44f558fd0 + sha256: fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3 + url: "https://pub.dev" + source: hosted + version: "0.8.9+1" + image_picker_linux: + dependency: transitive + description: + name: image_picker_linux + sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" url: "https://pub.dev" source: hosted - version: "0.8.7+4" + version: "0.2.1+1" + image_picker_macos: + dependency: transitive + description: + name: image_picker_macos + sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" + url: "https://pub.dev" + source: hosted + version: "0.2.1+1" image_picker_platform_interface: dependency: transitive description: @@ -1022,6 +1086,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.9.0" + image_picker_windows: + dependency: transitive + description: + name: image_picker_windows + sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" + url: "https://pub.dev" + source: hosted + version: "0.2.1+1" injectable: dependency: "direct main" description: @@ -1098,10 +1170,10 @@ packages: dependency: "direct main" description: name: local_auth - sha256: "0cf238be2bfa51a6c9e7e9cfc11c05ea39f2a3a4d3e5bb255d0ebc917da24401" + sha256: "27679ed8e0d7daab2357db6bb7076359e083a56b295c0c59723845301da6aed9" url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.1.8" local_auth_android: dependency: transitive description: @@ -1134,6 +1206,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" + logger: + dependency: transitive + description: + name: logger + sha256: "6bbb9d6f7056729537a4309bda2e74e18e5d9f14302489cc1e93f33b3fe32cac" + url: "https://pub.dev" + source: hosted + version: "2.0.2+1" logging: dependency: transitive description: @@ -1330,10 +1410,10 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6 + sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.1.7" percent_indicator: dependency: "direct main" description: @@ -1442,18 +1522,18 @@ packages: dependency: transitive description: name: protobuf - sha256: "01dd9bd0fa02548bf2ceee13545d4a0ec6046459d847b6b061d8a27237108a08" + sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "3.1.0" provider: dependency: "direct main" description: name: provider - sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f + sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096" url: "https://pub.dev" source: hosted - version: "6.0.5" + version: "6.1.1" pub_semver: dependency: transitive description: @@ -1462,6 +1542,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + pubspec: + dependency: transitive + description: + name: pubspec + sha256: f534a50a2b4d48dc3bc0ec147c8bd7c304280fff23b153f3f11803c4d49d927e + url: "https://pub.dev" + source: hosted + version: "2.3.0" + pubspec_dependency_sorter: + dependency: "direct dev" + description: + name: pubspec_dependency_sorter + sha256: "515adbbe2fcf96a35b02957775c4e71db7197f4f8890ebeb9b42d8ccf72375a0" + url: "https://pub.dev" + source: hosted + version: "1.0.4" pubspec_parse: dependency: transitive description: @@ -1486,6 +1582,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.0" + quiver: + dependency: transitive + description: + name: quiver + sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + url: "https://pub.dev" + source: hosted + version: "3.2.1" rating_dialog: dependency: "direct main" description: @@ -1522,10 +1626,10 @@ packages: dependency: transitive description: name: riverpod - sha256: b0657b5b30c81a3184bdaab353045f0a403ebd60bb381591a8b7ad77dcade793 + sha256: "548e2192eb7aeb826eb89387f814edb76594f3363e2c0bb99dd733d795ba3589" url: "https://pub.dev" source: hosted - version: "2.3.7" + version: "2.5.0" riverpod_analyzer_utils: dependency: transitive description: @@ -1903,10 +2007,10 @@ packages: dependency: "direct main" description: name: uni_links_desktop - sha256: a0218c91d6d88f32b749482d571640ca9912e2aeaa390688afbf364bc5075a5c + sha256: "692de81efc32ef72df56d428902afb5216d5f9e43d71c7b315d360acd7a1e115" url: "https://pub.dev" source: hosted - version: "0.1.6" + version: "0.1.7" uni_links_platform_interface: dependency: transitive description: @@ -1931,6 +2035,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.0" + uri: + dependency: transitive + description: + name: uri + sha256: "889eea21e953187c6099802b7b4cf5219ba8f3518f604a1033064d45b1b8268a" + url: "https://pub.dev" + source: hosted + version: "1.0.0" url_launcher: dependency: "direct main" description: @@ -2095,18 +2207,18 @@ packages: dependency: transitive description: name: win32 - sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c" + sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8" url: "https://pub.dev" source: hosted - version: "4.1.4" + version: "5.2.0" win32_registry: dependency: transitive description: name: win32_registry - sha256: "1c52f994bdccb77103a6231ad4ea331a244dbcef5d1f37d8462f713143b0bfae" + sha256: "41fd8a189940d8696b1b810efb9abcf60827b6cbfab90b0c43e8439e3a39d85a" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.2" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 2857f291..7ef36ee8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,146 +1,130 @@ name: agoradesk -description: Person-to-person platform to allow anyone to trade their local currency for cryptocurrency. - -publish_to: "none" - version: 1.1.18+114 - -environment: - sdk: ">=3.0.0 <4.0.0" - -dependencies: - flutter: - sdk: flutter - cupertino_icons: ^1.0.2 +publish_to: none +description: Person-to-person platform to allow anyone to trade their local currency for cryptocurrency. +environment: + sdk: '>=3.0.0 <4.0.0' +dependencies: auto_route: ^5.0.1 auto_size_text: ^3.0.0 - barcode_scan2: ^4.2.4 + barcode_scan2: ^4.3.0 + cached_network_image: ^3.3.1 connectivity_plus: ^5.0.2 + convert: ^3.1.1 + country_picker: ^2.0.11 + cupertino_icons: ^1.0.2 + currency_picker: ^2.0.7 + decimal: ^2.2.0 device_info_plus: ^9.0.3 - expandable: ^5.0.1 - package_info_plus: ^4.1.0 dio: ^5.2.1 - # dio_logging_interceptor: ^1.0.1 + dots_indicator: ^2.0.0 + dropdown_search: ^5.0.6 + duration: ^3.0.11 + easy_debounce: ^2.0.2 event_bus: ^2.0.0 + expandable: ^5.0.1 + expansion_tile_card: ^2.0.0 + extended_image: ^8.1.0 + figma_squircle: ^0.5.3 firebase_core: ^2.25.4 firebase_messaging: ^14.7.15 + flutter_app_badger: ^1.5.0 + flutter_displaymode: ^0.5.0 + flutter_foreground_task: ^6.1.2 + flutter_inappwebview: ^6.0.0 + flutter_keyboard_size: ^1.0.1 flutter_keyboard_visibility: ^5.2.0 + flutter_local_notifications: ^16.3.2 + flutter_pin_code_widget: ^0.1.0 + flutter_riverpod: ^2.4.10 flutter_screenutil: ^5.0.2 + flutter_secure_storage: ^9.0.0 flutter_svg: ^2.0.4 flutter_verification_code: ^1.1.2+1 - url_launcher: ^6.0.17 - intl: any - rxdart: ^0.27.7 - timeago: ^3.2.2 - provider: ^6.0.5 - sentry_flutter: ^7.5.2 - collection: ^1.15.0 - rating_dialog: ^2.0.3 - visibility_detector: ^0.4.0 - cached_network_image: ^3.3.0 - json_annotation: ^4.4.0 - share_plus: ^7.0.0 + freezed_annotation: any + get_it: ^7.2.0 + google_api_availability: ^5.0.0 hive: ^2.2.3 hive_flutter: ^1.1.0 - shared_preferences: ^2.0.15 + image_picker: ^1.0.7 + injectable: ^2.1.0 + insta_image_viewer: ^1.0.2 + intl: any + json_annotation: ^4.4.0 + local_auth: ^2.1.8 + lottie: ^2.3.2 + markdown_widget: ^2.3.2+3 overlay_support: ^2.0.1 - plausible_analytics: ^0.2.1 - flutter_app_badger: ^1.5.0 - flutter_displaymode: ^0.5.0 - flutter_inappwebview: ^6.0.0 - flutter_keyboard_size: ^1.0.1 - flutter_riverpod: ^2.3.6 - figma_squircle: ^0.5.3 - freezed_annotation: any - easy_debounce: ^2.0.2 - extended_image: ^8.1.0 + package_info_plus: ^4.1.0 path_provider: ^2.0.8 - flutter_pin_code_widget: ^0.1.0 - flutter_secure_storage: ^8.0.0 - dots_indicator: ^2.0.0 - currency_picker: ^2.0.7 - country_picker: ^2.0.11 - dropdown_search: ^5.0.6 - markdown_widget: ^2.3.2+3 - vm: ^1.0.4 - qr_flutter: ^4.1.0 - shimmer: ^2.0.0 - image_picker: ^0.8.5+3 percent_indicator: ^4.2.1 - insta_image_viewer: ^1.0.2 - get_it: ^7.2.0 - injectable: ^2.1.0 - flutter_local_notifications: ^13.0.0 - flutter_foreground_task: ^6.1.2 - google_api_availability: ^3.0.1 - duration: ^3.0.11 - decimal: ^2.2.0 permission_handler: ^10.0.0 + plausible_analytics: ^0.2.1 + provider: ^6.1.1 + qr_flutter: ^4.1.0 + rating_dialog: ^2.0.3 restart_app: ^1.1.2 - local_auth: ^2.1.2 - convert: ^3.1.1 - expansion_tile_card: ^2.0.0 - lottie: ^2.3.2 riverpod_annotation: ^2.1.1 + rxdart: ^0.27.7 + sentry_flutter: ^7.5.2 + share_plus: ^7.0.0 + shared_preferences: ^2.0.15 + shimmer: ^2.0.0 sticky_headers: ^0.3.0+2 store_checker: ^1.1.0 + timeago: ^3.2.2 uni_links: ^0.5.1 - uni_links_desktop: ^0.1.6 - -dependency_overrides: - # flutter_foreground_task: - # path: ../flutter_foreground_task - # flutter_foreground_task: - # git: - # url: https://github.com/sergdeus/flutter_foreground_task - # ref: master - expansion_tile_card: - git: - url: https://github.com/awaik/expansion_tile_card/ - ref: fix_theme_issue -# flutter_pin_code_widget: -# path: ../flutter_pin_code_widget - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_localizations: + uni_links_desktop: ^0.1.7 + url_launcher: ^6.0.17 + visibility_detector: ^0.4.0 + vm: ^1.0.4 + flutter: sdk: flutter - - flutter_lints: ^2.0.1 +dev_dependencies: auto_route_generator: any - build_runner: ^2.1.7 - json_serializable: ^6.1.3 - hive_generator: any + build_runner: ^2.4.8 + custom_lint: any + flutter_lints: ^2.0.1 freezed: ^2.1.0 - mocktail: any + hive_generator: any injectable_generator: any - riverpod_lint: any + json_serializable: ^6.1.3 + mocktail: any + pubspec_dependency_sorter: ^1.0.4 riverpod_generator: ^2.2.0 - custom_lint: - -flutter: - uses-material-design: true - - assets: + riverpod_lint: any + flutter_localizations: + sdk: flutter + flutter_test: + sdk: flutter +dependency_overrides: + expansion_tile_card: + git: + url: https://github.com/awaik/expansion_tile_card/ + ref: fix_theme_issue +flutter: + assets: - assets/banks/ - assets/flags/ - assets/json/ - assets/branding/ - assets/images/ - assets/misc/ - - fonts: - - family: agoraFont - fonts: - - asset: assets/fonts/agoraFont.ttf - - - family: Roboto - fonts: - - asset: assets/fonts/Roboto-Medium.ttf + fonts: + - + family: agoraFont + fonts: + - + asset: assets/fonts/agoraFont.ttf + - + family: Roboto + fonts: + - + asset: assets/fonts/Roboto-Medium.ttf weight: 500 - - asset: assets/fonts/Roboto-Regular.ttf + - + asset: assets/fonts/Roboto-Regular.ttf weight: 400 - -flutter_intl: + uses-material-design: true +flutter_intl: enabled: true