diff --git a/android/app/build.gradle b/android/app/build.gradle index 1a01e3f..60be9b1 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -108,7 +108,7 @@ android { defaultConfig { applicationId "com.keevault.keevault" applicationIdSuffix idSuffix - minSdkVersion 26 + minSdkVersion 29 targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/android/build.gradle b/android/build.gradle index aca8b4a..f0c5fa6 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.8.0' + ext.kotlin_version = '1.8.22' repositories { google() mavenCentral() diff --git a/lib/logging/logger.dart b/lib/logging/logger.dart index 94eb782..ff6c035 100644 --- a/lib/logging/logger.dart +++ b/lib/logging/logger.dart @@ -2,24 +2,27 @@ import 'package:logger/logger.dart'; import 'package:logger_flutter/logger_flutter.dart'; import 'package:logging/logging.dart' as logging; -class KeeVaultLogOutput extends LogOutput { - @override - void output(OutputEvent event) { - assert(() { - // ignore: avoid_print - event.lines.forEach(print); - return true; - }()); - LogConsole.add(event, bufferSize: 1000); - } -} +// class KeeVaultLogOutput extends LogOutput { +// @override +// void output(OutputEvent event) { +// assert(() { +// // ignore: avoid_print +// event.lines.forEach(print); +// return true; +// }()); +// LogConsole.add(event, bufferSize: 1000); +// } +// } Logger getLogger() { - return Logger( - printer: SimplePrinter(printTime: false, colors: false), - output: KeeVaultLogOutput(), + final lg = Logger( + printer: SimplePrinter(printTime: true, colors: false), + //output: KeeVaultLogOutput(), + output: ConsoleOutput(), filter: ProductionFilter(), ); + LogConsole.init(bufferSize: 1000); + return lg; } final l = getLogger(); diff --git a/lib/main.dart b/lib/main.dart index 4df8bb3..28e643a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -41,14 +41,14 @@ void main() async { }, (dynamic error, StackTrace stackTrace) { if (error is KeeLoginFailedMITMException) { - l.wtf('MITM attack detected!', error, stackTrace); + l.wtf('MITM attack detected!', error: error, stackTrace: stackTrace); navigatorKey.currentState?.overlay?.context.let((context) { var message = 'Sign in failed because the response we received from the server indicates that it may be compromised. The most likely explanation is that someone near you or at your internet service provider is attempting to interfere with the secure connection and connect you to a malicious server (A Miscreant In The Middle attack). Find a different internet connection immediately, shut down the Kee Vault app and then try again. If it keeps happening, your local device may be compromised. The security of your Kee Vault remains intact so you need not panic. More information about the error is available at https://forum.kee.pm/'; try { message = S.of(context).serverMITMWarning; } catch (e, stackTrace) { - l.w('Error while localising error message', e, stackTrace); + l.w('Error while localising error message', error: e, stackTrace: stackTrace); } DialogUtils.showErrorDialog(context, null, message); MatomoTracker.instance.trackEvent(eventInfo: EventInfo(category: 'main', action: 'error', name: 'mitm')); @@ -57,13 +57,13 @@ void main() async { error.message.startsWith('Scaffold.geometryOf() must only be accessed during the paint phase.')) { l.w("Known Flutter bug ignored: 'Scaffold.geometryOf() must only be accessed during the paint phase.' This is known to be caused by tap interactions while the animations package is actively animating from an entrylistitem to an entry for editing. Other potential causes should be investigated if this is unlikely to have been the cause in this specific situation."); } else { - l.wtf('Unhandled error in app.', error, stackTrace); + l.wtf('Unhandled error in app.', error: error, stackTrace: stackTrace); navigatorKey.currentState?.overlay?.context.let((context) { var message = 'Unexpected error: $error'; try { message = S.of(context).unexpected_error('$error'); } catch (e, stackTrace) { - l.w('Error while localising error message', e, stackTrace); + l.w('Error while localising error message', error: e, stackTrace: stackTrace); } DialogUtils.showErrorDialog(context, null, '$message : $stackTrace'); MatomoTracker.instance.trackEvent(eventInfo: EventInfo(category: 'main', action: 'error', name: 'wtf')); diff --git a/lib/model/entry.dart b/lib/model/entry.dart index 748c516..e90766a 100644 --- a/lib/model/entry.dart +++ b/lib/model/entry.dart @@ -268,7 +268,7 @@ class EntryViewModel { digits: data['size']?.toInt() ?? OtpAuth.DEFAULT_DIGITS, ).toUri().toString(); } on FormatException catch (e, stackTrace) { - l.d('Error parsing data while normalising OTP value', e, stackTrace); + l.d('Error parsing data while normalising OTP value', error: e, stackTrace: stackTrace); rethrow; } } @@ -283,10 +283,10 @@ class EntryViewModel { ).toUri().toString(); } on FormatException catch (e, stackTrace) { // ignore format exception from base32 decoding. - l.w('Error decoding base32 secret', e, stackTrace); + l.w('Error decoding base32 secret', error: e, stackTrace: stackTrace); return null; } catch (e, stackTrace) { - l.w('Error while parsing OTP format', e, stackTrace); + l.w('Error while parsing OTP format', error: e, stackTrace: stackTrace); throw FormatException('Error parsing Tray OTP Format $e'); } } diff --git a/lib/vault_backend/jwt.dart b/lib/vault_backend/jwt.dart index 09c7f14..e133989 100644 --- a/lib/vault_backend/jwt.dart +++ b/lib/vault_backend/jwt.dart @@ -96,7 +96,7 @@ class JWT { final signature = Signature(base64Url.decode(base64Url.normalize(sigParts[2]))); isValid = verifier.verify(Uint8List.fromList(data), signature); } catch (e, stacktrace) { - l.e('Cryptography error during JWT verification', e, stacktrace); + l.e('Cryptography error during JWT verification', error: e, stackTrace: stacktrace); throw KeeInvalidJWTException(); } diff --git a/lib/widgets/account_create.dart b/lib/widgets/account_create.dart index 8258fb6..3a113d1 100644 --- a/lib/widgets/account_create.dart +++ b/lib/widgets/account_create.dart @@ -131,7 +131,7 @@ class _AccountCreateWidgetState extends State { return PaymentService.instance.finishTransaction(item); } on Exception catch (e) { l.w('Exception while finishing the payment transaction. Ignoring but an app restart and/or a fresh sign-in or registration attempt may be required for everything to catch up. May also require a few minutes for server-side operations to complete.', - e); + error: e); } }); if (retry) { diff --git a/lib/widgets/binaries.dart b/lib/widgets/binaries.dart index bfb30ea..ca2d837 100644 --- a/lib/widgets/binaries.dart +++ b/lib/widgets/binaries.dart @@ -306,7 +306,7 @@ class BinaryCardWidget extends StatelessWidget { duration: Duration(seconds: 3), )); } on Exception catch (e, st) { - l.e('Export failed: $e', st); + l.e('Export failed', error: e, stackTrace: st); if (e is PlatformException) { if (e.code == 'read_external_storage_denied' && context.mounted) { alertUserToPermissionsProblem(context, 'export'); diff --git a/lib/widgets/dialog_utils.dart b/lib/widgets/dialog_utils.dart index dfedea3..476adf4 100644 --- a/lib/widgets/dialog_utils.dart +++ b/lib/widgets/dialog_utils.dart @@ -69,7 +69,7 @@ class DialogUtils { TextButton( child: Text(S.of(context).openLogConsole), onPressed: () async { - await LogConsole.open(context); + LogConsole.open(context); }, ), TextButton( diff --git a/lib/widgets/entry.dart b/lib/widgets/entry.dart index b0b64c0..46e751b 100644 --- a/lib/widgets/entry.dart +++ b/lib/widgets/entry.dart @@ -173,7 +173,7 @@ class EntryWidget extends StatelessWidget { l.d('Got totp secret with ${value.lengthInBytes} bytes.'); return OtpAuth(secret: value); } catch (e, stackTrace) { - l.w('Invalid base32 code?', e, stackTrace); + l.w('Invalid base32 code?', error: e, stackTrace: stackTrace); return null; } } @@ -237,12 +237,14 @@ class EntryWidget extends StatelessWidget { if (e.code == barcode.BarcodeScanner.cameraAccessDenied) { // We already tried to get the user to grant permission so if they really don't want to // by this point, they'll have to enter the code manually. - l.i('User denied camera permission.. Automatically continuing to manual code entry.', e); + l.i('User denied camera permission.. Automatically continuing to manual code entry.', error: e); } else { - l.e('Unknown PlatformException. Automatically continuing to manual code entry.', e, stackTrace); + l.e('Unknown PlatformException. Automatically continuing to manual code entry.', + error: e, stackTrace: stackTrace); } } catch (e, stackTrace) { - l.w('Error during barcode scanning. Automatically continuing to manual code entry.', e, stackTrace); + l.w('Error during barcode scanning. Automatically continuing to manual code entry.', + error: e, stackTrace: stackTrace); } } diff --git a/lib/widgets/entry_field.dart b/lib/widgets/entry_field.dart index f4b7544..66bdbbb 100644 --- a/lib/widgets/entry_field.dart +++ b/lib/widgets/entry_field.dart @@ -548,7 +548,7 @@ class _OtpEntryFieldState extends _EntryTextFieldState { _errorMessage = null; }); } on FormatException catch (e, stackTrace) { - l.e('Error while decoding otpauth url.', e, stackTrace); + l.e('Error while decoding otpauth url.', error: e, stackTrace: stackTrace); setState(() { _currentOtp = ''; _errorMessage = 'Error generating token $e'; diff --git a/lib/widgets/help.dart b/lib/widgets/help.dart index db32950..9724347 100644 --- a/lib/widgets/help.dart +++ b/lib/widgets/help.dart @@ -116,7 +116,7 @@ class _HelpWidgetState extends State with TraceableClientMixin { Padding( padding: const EdgeInsets.all(16.0), child: OutlinedButton( - onPressed: () async => await LogConsole.open(context), child: Text('Show log console')), + onPressed: () async => LogConsole.open(context), child: Text('Show log console')), ), ], ), diff --git a/lib/widgets/import_export.dart b/lib/widgets/import_export.dart index 6e08c55..53da47e 100644 --- a/lib/widgets/import_export.dart +++ b/lib/widgets/import_export.dart @@ -345,7 +345,7 @@ class _ImportExportWidgetState extends State { duration: Duration(seconds: 3), )); } on Exception catch (e, st) { - l.e('Export failed: $e', st); + l.e('Export failed', error: e, stackTrace: st); if (e is PlatformException) { if (e.code == 'read_external_storage_denied' && context.mounted) { alertUserToPermissionsProblem(context, 'export'); @@ -401,7 +401,7 @@ class _ImportExportWidgetState extends State { duration: Duration(seconds: 3), )); } on Exception catch (e, st) { - l.e('Export failed: $e', st); + l.e('Export failed', error: e, stackTrace: st); if (e is PlatformException) { if (e.code == 'read_external_storage_denied' && context.mounted) { alertUserToPermissionsProblem(context, 'export'); diff --git a/pubspec.lock b/pubspec.lock index 58a1583..f686818 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,18 +13,18 @@ packages: dependency: "direct main" description: name: animations - sha256: fe8a6bdca435f718bb1dc8a11661b2c22504c6da40ef934cee8327ed77934164 + sha256: ef57563eed3620bd5d75ad96189846aca1e033c0c45fc9a7d26e80ab02b88a70 url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.0.8" archive: dependency: transitive description: name: archive - sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" + sha256: "7e0d52067d05f2e0324268097ba723b71cb41ac8a6a2b24d1edf9c536b987b03" url: "https://pub.dev" source: hosted - version: "3.3.7" + version: "3.4.6" argon2_ffi: dependency: "direct main" description: @@ -192,18 +192,18 @@ packages: dependency: "direct main" description: name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" dependency_validator: dependency: "direct dev" description: name: dependency_validator - sha256: "08349175533ed0bd06eb9b6043cde66c45b2bfc7ebc222a7542cdb1324f1bf03" + sha256: f727a5627aa405965fab4aef4f468e50a9b632ba0737fd2f98c932fec6d712b9 url: "https://pub.dev" source: hosted - version: "3.2.2" + version: "3.2.3" device_info_plus: dependency: transitive description: @@ -224,10 +224,10 @@ packages: dependency: "direct main" description: name: dio - sha256: ce75a1b40947fea0a0e16ce73337122a86762e38b982e1ccb909daa3b9bc4197 + sha256: "417e2a6f9d83ab396ec38ff4ea5da6c254da71e4db765ad737a42af6930140b7" url: "https://pub.dev" source: hosted - version: "5.3.2" + version: "5.3.3" email_validator: dependency: "direct main" description: @@ -264,10 +264,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: be325344c1f3070354a1d84a231a1ba75ea85d413774ec4bdf444c023342e030 + sha256: "903dd4ba13eae7cef64acc480e91bf54c3ddd23b5b90b639c170f3911e489620" url: "https://pub.dev" source: hosted - version: "5.5.0" + version: "6.0.0" fixnum: dependency: transitive description: @@ -292,12 +292,10 @@ packages: flutter_autofill_service: dependency: "direct main" description: - path: "." - ref: master - resolved-ref: "7d4e54bc430b22a87d4a30d8fb0f70d5ac243197" - url: "https://github.com/kee-org/flutter_autofill_service.git" - source: git - version: "0.17.1" + path: "../flutter_autofill_service" + relative: true + source: path + version: "0.18.0" flutter_bloc: dependency: "direct main" description: @@ -343,10 +341,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4" + sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.0.3" flutter_localizations: dependency: "direct main" description: flutter @@ -356,10 +354,10 @@ packages: dependency: "direct dev" description: name: flutter_native_splash - sha256: ecff62b3b893f2f665de7e4ad3de89f738941fcfcaaba8ee601e749efafa4698 + sha256: d93394f22f73e810bda59e11ebe83329c5511d6460b6b7509c4e1f3c92d6d625 url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.5" flutter_persistent_queue: dependency: "direct main" description: @@ -424,10 +422,10 @@ packages: dependency: "direct main" description: name: font_awesome_flutter - sha256: "5fb789145cae1f4c3245c58b3f8fb287d055c26323879eab57a7bf0cfd1e45f3" + sha256: "52671aea66da73b58d42ec6d0912b727a42248dd9a7c76d6c20f275783c48c08" url: "https://pub.dev" source: hosted - version: "10.5.0" + version: "10.6.0" glob: dependency: transitive description: @@ -464,10 +462,10 @@ packages: dependency: transitive description: name: image - sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf + sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" url: "https://pub.dev" source: hosted - version: "4.0.17" + version: "4.1.3" intl: dependency: transitive description: @@ -546,19 +544,19 @@ packages: dependency: "direct main" description: name: logger - sha256: "7ad7215c15420a102ec687bb320a7312afd449bac63bfb1c60d9787c27b9767f" + sha256: "6bbb9d6f7056729537a4309bda2e74e18e5d9f14302489cc1e93f33b3fe32cac" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "2.0.2+1" logger_flutter: dependency: "direct main" description: path: "." ref: master - resolved-ref: be1a63f9b4e01db60f621fd6e732a0b40d81bef8 - url: "https://github.com/kee-org/logger_flutter.git" + resolved-ref: e68bd498bb1963e666b0ec55ad62f1419425391a + url: "https://github.com/kee-org/logger_flutter2.git" source: git - version: "1.1.0+6" + version: "1.1.3" logging: dependency: "direct main" description: @@ -595,10 +593,10 @@ packages: dependency: "direct main" description: name: matomo_tracker - sha256: "851d45c900a24f093cadf71a92c16e5d878701ecb0833fe435284e19023d187f" + sha256: de5c08e80b566f8d1f0edf47f5704fe855fbef52377acb2796d28c2a3e36ea41 url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.1.1" meta: dependency: "direct main" description: @@ -643,10 +641,10 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: "6ff267fcd9d48cb61c8df74a82680e8b82e940231bb5f68356672fde0397334a" + sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017" url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.2.0" package_info_plus_platform_interface: dependency: transitive description: @@ -667,10 +665,10 @@ packages: dependency: "direct main" description: name: path_provider - sha256: "909b84830485dbcd0308edf6f7368bc8fd76afa26a270420f34cabea2a6467a0" + sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" path_provider_android: dependency: transitive description: @@ -723,18 +721,18 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: "63e5216aae014a72fe9579ccd027323395ce7a98271d9defa9d57320d001af81" + sha256: "284a66179cabdf942f838543e10413246f06424d960c92ba95c84439154fcac8" url: "https://pub.dev" source: hosted - version: "10.4.3" + version: "11.0.1" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: "2ffaf52a21f64ac9b35fe7369bb9533edbd4f698e5604db8645b1064ff4cf221" + sha256: f9fddd3b46109bd69ff3f9efa5006d2d309b7aec0f3c1c5637a60a2d5659e76e url: "https://pub.dev" source: hosted - version: "10.3.3" + version: "11.1.0" permission_handler_apple: dependency: transitive description: @@ -747,10 +745,10 @@ packages: dependency: transitive description: name: permission_handler_platform_interface - sha256: "7c6b1500385dd1d2ca61bb89e2488ca178e274a69144d26bbd65e33eae7c02a9" + sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4" url: "https://pub.dev" source: hosted - version: "3.11.3" + version: "3.12.0" permission_handler_windows: dependency: transitive description: @@ -771,10 +769,10 @@ packages: dependency: "direct main" description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.3" plugin_platform_interface: dependency: transitive description: @@ -871,30 +869,46 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" + sensors_plus: + dependency: transitive + description: + name: sensors_plus + sha256: a1e461f28a8e8d3f81feb07d5c4e87e948379ea91f0b5131266bb79f72b38acb + url: "https://pub.dev" + source: hosted + version: "3.1.0" + sensors_plus_platform_interface: + dependency: transitive + description: + name: sensors_plus_platform_interface + sha256: "95f0cc08791b8bf0c41c5fa99c84be2a7d5bf60a811ddc17e1438b1e68caf0d3" + url: "https://pub.dev" + source: hosted + version: "1.1.3" share_plus: dependency: "direct main" description: name: share_plus - sha256: "6cec740fa0943a826951223e76218df002804adb588235a8910dc3d6b0654e11" + sha256: f74fc3f1cbd99f39760182e176802f693fa0ec9625c045561cfad54681ea93dd url: "https://pub.dev" source: hosted - version: "7.1.0" + version: "7.2.1" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "357412af4178d8e11d14f41723f80f12caea54cf0d5cd29af9dcdab85d58aea7" + sha256: df08bc3a07d01f5ea47b45d03ffcba1fa9cd5370fb44b3f38c70e42cced0f956 url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.3.1" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1" + sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.2" shared_preferences_android: dependency: transitive description: @@ -1065,66 +1079,66 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: "781bd58a1eb16069412365c98597726cd8810ae27435f04b3b4d3a470bacd61e" + sha256: b1c9e98774adf8820c96fbc7ae3601231d324a7d5ebd8babe27b6dfac91357ba url: "https://pub.dev" source: hosted - version: "6.1.12" + version: "6.2.1" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "3dd2388cc0c42912eee04434531a26a82512b9cb1827e0214430c9bcbddfe025" + sha256: "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def" url: "https://pub.dev" source: hosted - version: "6.0.38" + version: "6.2.0" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" + sha256: "4ac97281cf60e2e8c5cc703b2b28528f9b50c8f7cebc71df6bdf0845f647268a" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.2.0" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" + sha256: "9f2d390e096fdbe1e6e6256f97851e51afc2d9c423d3432f1d6a02a8a9a8b9fd" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.1.0" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" + sha256: b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234 url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.1.0" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea + sha256: "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.0" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4 + sha256: "7fd2f55fe86cea2897b963e864dc01a7eb0719ecc65fcef4c1cc3d686d718bb2" url: "https://pub.dev" source: hosted - version: "2.0.18" + version: "2.2.0" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422" + sha256: "7754a1ad30ee896b265f8d14078b0513a4dba28d358eabb9d5f339886f4a1adc" url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "3.1.0" uuid: dependency: "direct main" description: @@ -1198,5 +1212,5 @@ packages: source: hosted version: "1.0.0" sdks: - dart: ">=3.1.0-185.0.dev <4.0.0" - flutter: ">=3.10.0" + dart: ">=3.1.0 <4.0.0" + flutter: ">=3.13.0" diff --git a/pubspec.yaml b/pubspec.yaml index 69fb0d8..50a90a5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,24 +23,24 @@ environment: dependencies: flutter: sdk: flutter - logger: 1.4.0 + logger: 2.0.2+1 logger_flutter: git: - url: https://github.com/kee-org/logger_flutter.git + url: https://github.com/kee-org/logger_flutter2.git ref: master - logging: ^1.1.1 + logging: ^1.2.0 kdbx: git: url: https://github.com/kee-org/kdbx.dart.git ref: master - path_provider: ^2.1.0 + path_provider: ^2.1.1 biometric_storage: git: url: https://github.com/kee-org/biometric_storage.git ref: keevault - package_info_plus: ^4.1.0 - shared_preferences: ^2.2.0 + package_info_plus: ^4.2.0 + shared_preferences: ^2.2.2 flutter_settings_screens: 0.3.3-null-safety+2 argon2_ffi: git: @@ -53,7 +53,7 @@ dependencies: bloc: ^8.1.2 flutter_bloc: ^8.1.3 fluro: ^2.0.5 - dio: ^5.3.2 + dio: ^5.3.3 crypto_keys: ^0.3.0+1 pointycastle: ^3.7.3 srp: @@ -61,10 +61,10 @@ dependencies: url: https://github.com/kee-org/srp.dart.git ref: master animate_icons: ^2.0.0 - animations: ^2.0.7 - font_awesome_flutter: ^10.5.0 + animations: ^2.0.8 + font_awesome_flutter: ^10.6.0 public_suffix: ^3.0.0 - url_launcher: ^6.1.12 + url_launcher: ^6.2.1 otp: ^3.1.4 tuple: ^2.0.2 collection: ^1.17.2 @@ -81,7 +81,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^1.0.5 + cupertino_icons: ^1.0.6 flutter_persistent_queue: git: @@ -90,14 +90,14 @@ dependencies: flutter_localizations: sdk: flutter - matomo_tracker: ^4.0.0 - file_picker: ^5.5.0 + matomo_tracker: ^4.1.1 + file_picker: ^6.0.0 zxcvbn: ^1.0.0 flutter_rating_bar: ^4.0.1 mime: ^1.0.4 - share_plus: ^7.1.0 + share_plus: ^7.2.1 path: 1.8.3 #flutter sdk always lags behind so upgrade this only when needed - permission_handler: ^10.4.3 + permission_handler: ^11.0.1 flutter_file_dialog: ^3.0.2 base32: ^2.1.3 barcode_scan2: @@ -106,7 +106,7 @@ dependencies: ref: main flutter_speed_dial: ^7.0.0 receive_intent: ^0.2.4 - platform: ^3.1.0 + platform: ^3.1.3 email_validator: ^2.1.17 convert: ^3.1.1 meta: ^1.9.1 @@ -121,9 +121,9 @@ dev_dependencies: flutter_test: sdk: flutter flutter_launcher_icons: "^0.13.1" - flutter_lints: ^2.0.2 - dependency_validator: ^3.2.2 - flutter_native_splash: ^2.3.2 + flutter_lints: ^2.0.3 + dependency_validator: ^3.2.3 + flutter_native_splash: ^2.3.5 #patrol: ^2.2.3 dependency_overrides: @@ -134,8 +134,8 @@ dependency_overrides: # path: ../logger_flutter/ # biometric_storage: # path: ../biometric_storage/ - # flutter_chips_input: - # path: ../flutter_chips_input/ + flutter_autofill_service: + path: ../flutter_autofill_service/ # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec