From a624c7f528d9bfe31b66459b30aca985e7551b71 Mon Sep 17 00:00:00 2001 From: Kristen McWilliam <9575627+Merrit@users.noreply.github.com> Date: Wed, 24 Jul 2024 11:25:54 -0400 Subject: [PATCH 01/10] update shortcuts for new Flutter version --- lib/shortcuts/app_shortcuts.dart | 6 +- lib/shortcuts/shortcuts.dart | 2 +- pubspec.lock | 256 +++++++++++++++++-------------- 3 files changed, 144 insertions(+), 120 deletions(-) diff --git a/lib/shortcuts/app_shortcuts.dart b/lib/shortcuts/app_shortcuts.dart index 40cc452..d88f565 100644 --- a/lib/shortcuts/app_shortcuts.dart +++ b/lib/shortcuts/app_shortcuts.dart @@ -14,10 +14,10 @@ class AppShortcuts extends StatelessWidget { required this.child, }) : super(key: key); - final _shortcuts = { - LogicalKeySet( - LogicalKeyboardKey.control, + final _shortcuts = { + const SingleActivator( LogicalKeyboardKey.keyQ, + control: true, ): const QuitIntent(), }; diff --git a/lib/shortcuts/shortcuts.dart b/lib/shortcuts/shortcuts.dart index 57d1914..d011a4f 100644 --- a/lib/shortcuts/shortcuts.dart +++ b/lib/shortcuts/shortcuts.dart @@ -8,7 +8,7 @@ class LoggingShortcutManager extends ShortcutManager { LoggingShortcutManager({required super.shortcuts}); @override - KeyEventResult handleKeypress(BuildContext context, RawKeyEvent event) { + KeyEventResult handleKeypress(BuildContext context, KeyEvent event) { final KeyEventResult result = super.handleKeypress(context, event); if (result == KeyEventResult.handled) { log('''Handled shortcut diff --git a/pubspec.lock b/pubspec.lock index 0513016..62193d3 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,34 +13,34 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" url: "https://pub.dev" source: hosted - version: "64.0.0" + version: "67.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" url: "https://pub.dev" source: hosted - version: "6.2.0" + version: "6.4.1" archive: dependency: transitive description: name: archive - sha256: "22600aa1e926be775fa5fe7e6894e7fb3df9efda8891c73f70fb3262399a432d" + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d url: "https://pub.dev" source: hosted - version: "3.4.10" + version: "3.6.1" args: dependency: transitive description: name: args - sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.5.0" async: dependency: transitive description: @@ -61,18 +61,18 @@ packages: dependency: "direct main" description: name: bloc - sha256: "3820f15f502372d979121de1f6b97bfcf1630ebff8fe1d52fb2b0bfa49be5b49" + sha256: "106842ad6569f0b60297619e9e0b1885c2fb9bf84812935490e6c5275777804e" url: "https://pub.dev" source: hosted - version: "8.1.2" + version: "8.1.4" bloc_test: dependency: "direct dev" description: name: bloc_test - sha256: "02f04270be5abae8df171143e61a0058a7acbce5dcac887612e89bb40cca4c33" + sha256: "165a6ec950d9252ebe36dc5335f2e6eb13055f33d56db0eeb7642768849b43d2" url: "https://pub.dev" source: hosted - version: "9.1.5" + version: "9.1.7" boolean_selector: dependency: transitive description: @@ -117,18 +117,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21" + sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22" url: "https://pub.dev" source: hosted - version: "2.4.8" + version: "2.4.9" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: c9e32d21dd6626b5c163d48b037ce906bbe428bc23ab77bcd77bb21e593b6185 + sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" url: "https://pub.dev" source: hosted - version: "7.2.11" + version: "7.3.0" built_collection: dependency: transitive description: @@ -141,10 +141,10 @@ packages: dependency: transitive description: name: built_value - sha256: c9aabae0718ec394e5bc3c7272e6bb0dc0b32201a08fe185ec1d8401d3e39309 + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb url: "https://pub.dev" source: hosted - version: "8.8.1" + version: "8.9.2" characters: dependency: transitive description: @@ -213,10 +213,10 @@ packages: dependency: transitive description: name: coverage - sha256: "8acabb8306b57a409bf4c83522065672ee13179297a6bb0cb9ead73948df7c76" + sha256: "3945034e86ea203af7a056d98e98e42a5518fff200d6e8e6647e1886b07e936e" url: "https://pub.dev" source: hosted - version: "1.7.2" + version: "1.8.0" crypto: dependency: transitive description: @@ -229,10 +229,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368" + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.6" diff_match_patch: dependency: transitive description: @@ -269,10 +269,10 @@ packages: dependency: transitive description: name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" file: dependency: transitive description: @@ -307,10 +307,10 @@ packages: dependency: "direct main" description: name: flutter_bloc - sha256: e74efb89ee6945bcbce74a5b3a5a3376b088e5f21f55c263fc38cbdc6237faae + sha256: b594505eac31a0518bdcb4b5b79573b8d9117b193cc80cc12e17d639b10aa27a url: "https://pub.dev" source: hosted - version: "8.1.3" + version: "8.1.6" flutter_launcher_icons: dependency: "direct dev" description: @@ -336,18 +336,18 @@ packages: dependency: "direct main" description: name: flutter_markdown - sha256: "30088ce826b5b9cfbf9e8bece34c716c8a59fa54461dcae1e4ac01a94639e762" + sha256: "04c4722cc36ec5af38acc38ece70d22d3c2123c61305d555750a091517bbe504" url: "https://pub.dev" source: hosted - version: "0.6.18+3" + version: "0.6.23" flutter_riverpod: dependency: "direct main" description: name: flutter_riverpod - sha256: da9591d1f8d5881628ccd5c25c40e74fc3eef50ba45e40c3905a06e1712412d5 + sha256: "0f1974eff5bbe774bf1d870e406fc6f29e3d6f1c46bd9c58e7172ff68a785d7d" url: "https://pub.dev" source: hosted - version: "2.4.9" + version: "2.5.1" flutter_test: dependency: "direct dev" description: flutter @@ -370,18 +370,18 @@ packages: dependency: "direct dev" description: name: freezed - sha256: "6c5031daae12c7072b3a87eff98983076434b4889ef2a44384d0cae3f82372ba" + sha256: a434911f643466d78462625df76fd9eb13e57348ff43fe1f77bbe909522c67a1 url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.5.2" freezed_annotation: dependency: "direct main" description: name: freezed_annotation - sha256: c3fd9336eb55a38cc1bbd79ab17573113a8deccd0ecbbf926cca3c62803b5c2d + sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.4" frontend_server_client: dependency: transitive description: @@ -394,10 +394,10 @@ packages: dependency: transitive description: name: get_it - sha256: d0b88dc35a7f97fd91fec0cf8f165abd97a57977968d8fc02ba0bc92e14ba07e + sha256: d85128a5dae4ea777324730dc65edd9c9f43155c109d5cc0a69cab74139fbac1 url: "https://pub.dev" source: hosted - version: "7.6.6" + version: "7.7.0" glob: dependency: transitive description: @@ -414,6 +414,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.1.0" + google_identity_services_web: + dependency: transitive + description: + name: google_identity_services_web + sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" + url: "https://pub.dev" + source: hosted + version: "0.3.1+1" google_sign_in: dependency: "direct main" description: @@ -426,18 +434,18 @@ packages: dependency: transitive description: name: google_sign_in_android - sha256: bfd42c81c30c6faba16e0f62968d5505a87504aaa672b3155ee931461abb0a49 + sha256: "7647893c65e6720973f0e579051c8f84b877b486614d9f70a404259c41a4632e" url: "https://pub.dev" source: hosted - version: "6.1.21" + version: "6.1.23" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: f3336d9e44d4d28063ac90271f6db5caf99f0480cb07281330e7a432edb95226 + sha256: a058c9880be456f21e2e8571c1126eaacd570bdc5b6c6d9d15aea4bdf22ca9fe url: "https://pub.dev" source: hosted - version: "5.7.3" + version: "5.7.6" google_sign_in_platform_interface: dependency: transitive description: @@ -466,10 +474,10 @@ packages: dependency: "direct main" description: name: googleapis_auth - sha256: af7c3a3edf9d0de2e1e0a77e994fae0a581c525fa7012af4fa0d4a52ed9484da + sha256: befd71383a955535060acde8792e7efc11d2fccd03dd1d3ec434e85b68775938 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.6.0" graphs: dependency: transitive description: @@ -507,10 +515,10 @@ packages: dependency: "direct main" description: name: http - sha256: d4872660c46d929f6b8a9ef4e7a7eff7e49bbf0c4ec3f385ee32df5119175139 + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.2" http_multi_server: dependency: transitive description: @@ -531,10 +539,10 @@ packages: dependency: transitive description: name: image - sha256: "004a2e90ce080f8627b5a04aecb4cdfac87d2c3f3b520aa291260be5a32c033d" + sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8" url: "https://pub.dev" source: hosted - version: "4.1.4" + version: "4.2.0" in_app_purchase: dependency: "direct main" description: @@ -555,18 +563,18 @@ packages: dependency: transitive description: name: in_app_purchase_platform_interface - sha256: "412efce2b9238c5ace4f057acad43f793ed06880e366d26ae322e796cadb051a" + sha256: "1d353d38251da5b9fea6635c0ebfc6bb17a2d28d0e86ea5e083bf64244f1fb4c" url: "https://pub.dev" source: hosted - version: "1.3.7" + version: "1.4.0" in_app_purchase_storekit: dependency: transitive description: name: in_app_purchase_storekit - sha256: c4b17a7f2ca8ddc7fd7996a8c32a3af6beddf91d651997c8675a5f23c103c9bc + sha256: a4b523cdad26d9c81fe1f35636b9d46c459f6c07b84a93ae5cbdd93b21670eea url: "https://pub.dev" source: hosted - version: "0.3.8+1" + version: "0.3.17+2" intl: dependency: "direct main" description: @@ -595,18 +603,42 @@ packages: dependency: "direct main" description: name: json_annotation - sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" url: "https://pub.dev" source: hosted - version: "4.8.1" + version: "4.9.0" json_serializable: dependency: "direct dev" description: name: json_serializable - sha256: aa1f5a8912615733e0fdc7a02af03308933c93235bdc8d50d0b0c8a8ccb0b969 + sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b + url: "https://pub.dev" + source: hosted + version: "6.8.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + url: "https://pub.dev" + source: hosted + version: "10.0.0" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 url: "https://pub.dev" source: hosted - version: "6.7.1" + version: "2.0.1" lints: dependency: transitive description: @@ -619,10 +651,10 @@ packages: dependency: "direct main" description: name: logger - sha256: "6bbb9d6f7056729537a4309bda2e74e18e5d9f14302489cc1e93f33b3fe32cac" + sha256: "697d067c60c20999686a0add96cf6aba723b3aa1f83ecf806a8097231529ec32" url: "https://pub.dev" source: hosted - version: "2.0.2+1" + version: "2.4.0" logging: dependency: transitive description: @@ -635,42 +667,42 @@ packages: dependency: transitive description: name: markdown - sha256: acf35edccc0463a9d7384e437c015a3535772e09714cf60e07eeef3a15870dcd + sha256: ef2a1298144e3f985cc736b22e0ccdaf188b5b3970648f2d9dc13efd1d9df051 url: "https://pub.dev" source: hosted - version: "7.1.1" + version: "7.2.2" matcher: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" mime: dependency: transitive description: name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" mockito: dependency: "direct dev" description: @@ -747,34 +779,34 @@ packages: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_provider: dependency: "direct main" description: name: path_provider - sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b + sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668" + sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.2.4" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" + sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.0" path_provider_linux: dependency: transitive description: @@ -795,10 +827,10 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.3.0" petitparser: dependency: transitive description: @@ -811,10 +843,10 @@ packages: dependency: transitive description: name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.5" plugin_platform_interface: dependency: transitive description: @@ -823,14 +855,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" - pointycastle: - dependency: transitive - description: - name: pointycastle - sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" - url: "https://pub.dev" - source: hosted - version: "3.7.3" pool: dependency: transitive description: @@ -843,10 +867,10 @@ packages: dependency: transitive description: name: provider - sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096" + sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c url: "https://pub.dev" source: hosted - version: "6.1.1" + version: "6.1.2" pub_semver: dependency: "direct main" description: @@ -859,18 +883,18 @@ packages: dependency: transitive description: name: pubspec_parse - sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 + sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8 url: "https://pub.dev" source: hosted - version: "1.2.3" + version: "1.3.0" riverpod: dependency: transitive description: name: riverpod - sha256: "942999ee48b899f8a46a860f1e13cee36f2f77609eb54c5b7a669bb20d550b11" + sha256: f21b32ffd26a36555e501b04f4a5dca43ed59e16343f1a30c13632b2351dfa4d url: "https://pub.dev" source: hosted - version: "2.4.9" + version: "2.5.1" screen_retriever: dependency: transitive description: @@ -1056,26 +1080,26 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: d25bb0ca00432a5e1ee40e69c36c85863addf7cc45e433769d61bed3fe81fd96 + sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" url: "https://pub.dev" source: hosted - version: "6.2.3" + version: "6.3.0" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "507dc655b1d9cb5ebc756032eb785f114e415f91557b73bf60b7e201dfedeb2f" + sha256: "17cd5e205ea615e2c6ea7a77323a11712dffa0720a8a90540db57a01347f9ad9" url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.3.2" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "75bb6fe3f60070407704282a2d295630cab232991eb52542b18347a8a941df03" + sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e url: "https://pub.dev" source: hosted - version: "6.2.4" + version: "6.3.1" url_launcher_linux: dependency: transitive description: @@ -1088,34 +1112,34 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234 + sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.2.0" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: a932c3a8082e118f80a475ce692fde89dc20fddb24c57360b96bc56f7035de1f + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b + sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.1" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 + sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" uuid: dependency: "direct main" description: @@ -1152,18 +1176,18 @@ packages: dependency: transitive description: name: web - sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.5.1" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.5" webkit_inspection_protocol: dependency: transitive description: @@ -1176,18 +1200,18 @@ packages: dependency: transitive description: name: win32 - sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8" + sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb" url: "https://pub.dev" source: hosted - version: "5.2.0" + version: "5.5.0" window_manager: dependency: "direct main" description: name: window_manager - sha256: dcc865277f26a7dad263a47d0e405d77e21f12cb71f30333a52710a408690bd7 + sha256: "8699323b30da4cdbe2aa2e7c9de567a6abd8a97d9a5c850a3c86dcd0b34bbfbf" url: "https://pub.dev" source: hosted - version: "0.3.7" + version: "0.3.9" window_size: dependency: "direct main" description: @@ -1222,5 +1246,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.2.0 <4.0.0" - flutter: ">=3.16.0" + dart: ">=3.3.0 <4.0.0" + flutter: ">=3.19.0" From 53bed58c7c28ecc3c470da8193ca54494dc82c4e Mon Sep 17 00:00:00 2001 From: Kristen McWilliam <9575627+Merrit@users.noreply.github.com> Date: Wed, 24 Jul 2024 13:44:41 -0400 Subject: [PATCH 02/10] chore: update dependencies (major versions) --- pubspec.lock | 62 +++++++++++++++++++++++++++++----------------------- pubspec.yaml | 18 +++++++-------- 2 files changed, 44 insertions(+), 36 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 62193d3..dea6027 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -323,10 +323,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "4.0.0" flutter_localizations: dependency: "direct main" description: flutter @@ -362,10 +362,10 @@ packages: dependency: "direct main" description: name: font_awesome_flutter - sha256: "1f93e5799f0e6c882819e8393a05c6ca5226010f289190f2242ec19f3f0fdba5" + sha256: "275ff26905134bcb59417cf60ad979136f1f8257f2f449914b2c3e05bbb4cd6f" url: "https://pub.dev" source: hosted - version: "9.2.0" + version: "10.7.0" freezed: dependency: "direct dev" description: @@ -410,10 +410,10 @@ packages: dependency: "direct main" description: name: google_fonts - sha256: e20ff62b158b96f392bfc8afe29dee1503c94fbea2cbe8186fd59b756b8ae982 + sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82 url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "6.2.1" google_identity_services_web: dependency: transitive description: @@ -426,10 +426,10 @@ packages: dependency: "direct main" description: name: google_sign_in - sha256: "821f354c053d51a2d417b02d42532a19a6ea8057d2f9ebb8863c07d81c98aaf9" + sha256: "0b8787cb9c1a68ad398e8010e8c8766bfa33556d2ab97c439fb4137756d7308f" url: "https://pub.dev" source: hosted - version: "5.4.4" + version: "6.2.1" google_sign_in_android: dependency: transitive description: @@ -458,18 +458,18 @@ packages: dependency: transitive description: name: google_sign_in_web - sha256: "75cc41ebc53b1756320ee14d9c3018ad3e6cea298147dbcd86e9d0c8d6720b40" + sha256: d606264c7a1a526a3aa79d938b85a601d8589731a478bd4a3dcbdeb14a572228 url: "https://pub.dev" source: hosted - version: "0.10.2+1" + version: "0.12.4+1" googleapis: dependency: "direct main" description: name: googleapis - sha256: c2f311bcd1b3e4052234162edc6b626a9013a7e1385d6aad37e9e6a6c5f89908 + sha256: "4eefba93b5f714d6c2bcc1695ff6fb09d36684d2a06912285d3981069796da10" url: "https://pub.dev" source: hosted - version: "11.4.0" + version: "13.1.0" googleapis_auth: dependency: "direct main" description: @@ -547,18 +547,18 @@ packages: dependency: "direct main" description: name: in_app_purchase - sha256: af00db44f0314eda24f5e7ff18a6b445ab95e11fcf49c53e4b7c6bef005eeecf + sha256: "960f26a08d9351fb8f89f08901f8a829d41b04d45a694b8f776121d9e41dcad6" url: "https://pub.dev" source: hosted - version: "3.1.5" + version: "3.2.0" in_app_purchase_android: dependency: "direct main" description: name: in_app_purchase_android - sha256: "8d24e7141d5da4e239045438cb990b98fe8fd3e8de6884fbc76ff4ecec30caf5" + sha256: "3d84d1a001fa138bed09e0cd95e9dbce268dce8b6f63bda7cf69cbf9135fbfbb" url: "https://pub.dev" source: hosted - version: "0.2.5+4" + version: "0.3.6" in_app_purchase_platform_interface: dependency: transitive description: @@ -643,10 +643,10 @@ packages: dependency: transitive description: name: lints - sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "4.0.0" logger: dependency: "direct main" description: @@ -715,10 +715,10 @@ packages: dependency: "direct dev" description: name: mocktail - sha256: "80a996cd9a69284b3dc521ce185ffe9150cde69767c2d3a0720147d93c0cef53" + sha256: "890df3f9688106f25755f26b1c60589a92b3ab91a22b8b224947ad041bf172d8" url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "1.0.4" msix: dependency: "direct dev" description: @@ -763,18 +763,18 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017" + sha256: b93d8b4d624b4ea19b0a5a208b2d6eff06004bc3ce74c06040b120eeadd00ce0 url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "8.0.0" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" + sha256: f49918f3433a3146047372f9d4f1f847511f2acd5cd030e1f44fe5a50036b70e url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.0" path: dependency: transitive description: @@ -980,6 +980,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.0" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" stack_trace: dependency: transitive description: @@ -1144,10 +1152,10 @@ packages: dependency: "direct main" description: name: uuid - sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90" url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "4.4.2" vector_math: dependency: transitive description: @@ -1247,4 +1255,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.3.0 <4.0.0" - flutter: ">=3.19.0" + flutter: ">=3.19.2" diff --git a/pubspec.yaml b/pubspec.yaml index 8c11e40..1ae2f7c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,11 +19,11 @@ dependencies: sdk: flutter flutter_markdown: ^0.6.10 flutter_riverpod: ^2.0.0-dev.9 - font_awesome_flutter: ^9.1.0 + font_awesome_flutter: ^10.7.0 freezed_annotation: ^2.2.0 - google_fonts: ^5.1.0 - google_sign_in: ^5.4.4 - googleapis: ^11.2.0 + google_fonts: ^6.2.1 + google_sign_in: ^6.2.1 + googleapis: ^13.1.0 googleapis_auth: ^1.3.1 helpers: git: @@ -33,17 +33,17 @@ dependencies: hive_flutter: ^1.1.0 http: ^1.0.0 in_app_purchase: ^3.0.7 - in_app_purchase_android: ^0.2.3+5 + in_app_purchase_android: ^0.3.6 intl: ^0.18.0 json_annotation: ^4.8.0 logger: ^2.0.1 multi_split_view: ^2.1.0 - package_info_plus: ^4.0.2 + package_info_plus: ^8.0.0 path_provider: ^2.0.10 pub_semver: ^2.0.0 store_checker: ^1.0.0 url_launcher: ^6.0.20 - uuid: ^3.0.6 + uuid: ^4.4.2 window_manager: ^0.3.0 window_size: git: @@ -60,13 +60,13 @@ dev_dependencies: url: https://github.com/Merrit/flutter_app_builder.git ref: abe7d671ff5e5fc692bec8908285282a88d928c0 flutter_launcher_icons: ^0.13.1 - flutter_lints: ^2.0.0 + flutter_lints: ^4.0.0 flutter_test: sdk: flutter freezed: ^2.3.2 json_serializable: ^6.6.1 mockito: ^5.4.2 - mocktail: ^0.3.0 + mocktail: ^1.0.4 msix: ^3.5.1 flutter: From 72a001169b16410fe021a0874f28452e111c8547 Mon Sep 17 00:00:00 2001 From: Kristen McWilliam <9575627+Merrit@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:35:38 -0400 Subject: [PATCH 03/10] chore: apply lints for new Flutter version --- lib/app/app_widget.dart | 2 +- lib/app/widgets/custom_about_dialog.dart | 2 +- lib/app/widgets/emoji_text.dart | 4 ++-- lib/calculator/calculator_page.dart | 12 +++++------- .../widgets/compare_by_dropdown_button.dart | 4 ++-- lib/calculator/widgets/item_card.dart | 16 ++++++---------- .../widgets/side_panel/sheet_tile.dart | 4 ++-- .../widgets/side_panel/sheet_tile_list.dart | 2 +- .../widgets/side_panel/side_panel_view.dart | 2 +- .../pages/purchase_successful_page.dart | 2 +- lib/purchases/pages/purchases_page.dart | 2 +- lib/settings/widgets/settings_page.dart | 9 ++++----- lib/shortcuts/app_shortcuts.dart | 4 ++-- 13 files changed, 29 insertions(+), 36 deletions(-) diff --git a/lib/app/app_widget.dart b/lib/app/app_widget.dart index 69c1503..968bfe7 100644 --- a/lib/app/app_widget.dart +++ b/lib/app/app_widget.dart @@ -14,7 +14,7 @@ import '../shortcuts/app_shortcuts.dart'; export 'cubit/app_cubit.dart'; class AppWidget extends StatefulWidget { - const AppWidget({Key? key}) : super(key: key); + const AppWidget({super.key}); @override State createState() => _AppWidgetState(); diff --git a/lib/app/widgets/custom_about_dialog.dart b/lib/app/widgets/custom_about_dialog.dart index 41025c3..b67062c 100644 --- a/lib/app/widgets/custom_about_dialog.dart +++ b/lib/app/widgets/custom_about_dialog.dart @@ -7,7 +7,7 @@ import '../app_widget.dart'; import 'widgets.dart'; class CustomAboutDialog extends StatelessWidget { - const CustomAboutDialog({Key? key}) : super(key: key); + const CustomAboutDialog({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/app/widgets/emoji_text.dart b/lib/app/widgets/emoji_text.dart index 36c4859..e40b9c1 100644 --- a/lib/app/widgets/emoji_text.dart +++ b/lib/app/widgets/emoji_text.dart @@ -9,10 +9,10 @@ class EmojiText extends StatelessWidget { final TextStyle? textStyle; const EmojiText({ - Key? key, + super.key, required this.text, this.textStyle, - }) : super(key: key); + }); bool shouldBreak(bool isEmoji, int value) { if (isEmoji) { diff --git a/lib/calculator/calculator_page.dart b/lib/calculator/calculator_page.dart index 95f7046..dc51b8c 100644 --- a/lib/calculator/calculator_page.dart +++ b/lib/calculator/calculator_page.dart @@ -17,7 +17,7 @@ import 'widgets/widgets.dart'; class CalculatorPage extends StatelessWidget { static const id = 'calculator_page'; - CalculatorPage({Key? key}) : super(key: key); + CalculatorPage({super.key}); final focusNode = FocusNode( debugLabel: 'Background node', @@ -102,7 +102,7 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget { @override final preferredSize = const Size.fromHeight(kToolbarHeight); - const CustomAppBar({Key? key}) : super(key: key); + const CustomAppBar({super.key}); @override Widget build(BuildContext context) { @@ -124,7 +124,7 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget { } class CalculatorView extends StatefulWidget { - const CalculatorView({Key? key}) : super(key: key); + const CalculatorView({super.key}); @override State createState() => _CalculatorViewState(); @@ -183,7 +183,7 @@ class _CalculatorViewState extends State { } class ScrollingItemsList extends StatelessWidget { - const ScrollingItemsList({Key? key}) : super(key: key); + const ScrollingItemsList({super.key}); @override Widget build(BuildContext context) { @@ -256,9 +256,7 @@ class ScrollingItemsList extends StatelessWidget { /// Displays the sheet's name, and allows the user to change it. class _SheetNameWidget extends StatelessWidget { - const _SheetNameWidget({ - Key? key, - }) : super(key: key); + const _SheetNameWidget(); @override Widget build(BuildContext context) { diff --git a/lib/calculator/widgets/compare_by_dropdown_button.dart b/lib/calculator/widgets/compare_by_dropdown_button.dart index a30bd92..0d2e402 100644 --- a/lib/calculator/widgets/compare_by_dropdown_button.dart +++ b/lib/calculator/widgets/compare_by_dropdown_button.dart @@ -6,8 +6,8 @@ import '../models/models.dart'; class CompareByDropdownButton extends StatelessWidget { const CompareByDropdownButton({ - Key? key, - }) : super(key: key); + super.key, + }); @override Widget build(BuildContext context) { diff --git a/lib/calculator/widgets/item_card.dart b/lib/calculator/widgets/item_card.dart index 858f897..2dae91d 100644 --- a/lib/calculator/widgets/item_card.dart +++ b/lib/calculator/widgets/item_card.dart @@ -18,9 +18,9 @@ class ItemCard extends StatelessWidget { final Item item; const ItemCard({ - Key? key, + super.key, required this.item, - }) : super(key: key); + }); @override Widget build(BuildContext context) { @@ -68,7 +68,7 @@ class ItemCard extends StatelessWidget { } class _ItemContents extends StatelessWidget { - const _ItemContents({Key? key}) : super(key: key); + const _ItemContents(); @override Widget build(BuildContext context) { @@ -125,9 +125,7 @@ class _ItemContents extends StatelessWidget { /// Only shown when there are more than 2 item cards. class _CloseButton extends ConsumerWidget { - const _CloseButton({ - Key? key, - }) : super(key: key); + const _CloseButton(); @override Widget build(BuildContext context, WidgetRef ref) { @@ -163,9 +161,7 @@ class _CloseButton extends ConsumerWidget { /// /// Lists the item's cost per gram, millilitre, etc. class _UnitCalculations extends StatelessWidget { - const _UnitCalculations({ - Key? key, - }) : super(key: key); + const _UnitCalculations(); @override Widget build(BuildContext context) { @@ -203,7 +199,7 @@ class _UnitCalculations extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: 2), child: Text('\$$valueString/${cost.unit}'), ); - }).toList(), + }), ], ); }, diff --git a/lib/calculator/widgets/side_panel/sheet_tile.dart b/lib/calculator/widgets/side_panel/sheet_tile.dart index 055027a..5c17502 100644 --- a/lib/calculator/widgets/side_panel/sheet_tile.dart +++ b/lib/calculator/widgets/side_panel/sheet_tile.dart @@ -18,8 +18,8 @@ class SheetTile extends StatefulWidget { const SheetTile( this.sheet, { - Key? key, - }) : super(key: key); + super.key, + }); @override State createState() => _SheetTileState(); diff --git a/lib/calculator/widgets/side_panel/sheet_tile_list.dart b/lib/calculator/widgets/side_panel/sheet_tile_list.dart index c44d898..6183380 100644 --- a/lib/calculator/widgets/side_panel/sheet_tile_list.dart +++ b/lib/calculator/widgets/side_panel/sheet_tile_list.dart @@ -7,7 +7,7 @@ import 'sheet_tile.dart'; /// The scrolling list of tiles in the drawer for each calculator sheet. class SheetTileList extends StatefulWidget { - const SheetTileList({Key? key}) : super(key: key); + const SheetTileList({super.key}); @override State createState() => _SheetTileListState(); diff --git a/lib/calculator/widgets/side_panel/side_panel_view.dart b/lib/calculator/widgets/side_panel/side_panel_view.dart index 98642bf..fa2f324 100644 --- a/lib/calculator/widgets/side_panel/side_panel_view.dart +++ b/lib/calculator/widgets/side_panel/side_panel_view.dart @@ -14,7 +14,7 @@ import 'sheet_tile_list.dart'; /// Holds the contents of the drawer for large displays, in the form of a /// navigation bar. class SidePanel extends StatefulWidget { - const SidePanel({Key? key}) : super(key: key); + const SidePanel({super.key}); @override State createState() => _SidePanelState(); diff --git a/lib/purchases/pages/purchase_successful_page.dart b/lib/purchases/pages/purchase_successful_page.dart index d960fae..d13c22c 100644 --- a/lib/purchases/pages/purchase_successful_page.dart +++ b/lib/purchases/pages/purchase_successful_page.dart @@ -5,7 +5,7 @@ import '../../calculator/calculator_page.dart'; class PurchaseSuccessfulPage extends StatelessWidget { static const id = 'purchase_successful_page'; - const PurchaseSuccessfulPage({Key? key}) : super(key: key); + const PurchaseSuccessfulPage({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/purchases/pages/purchases_page.dart b/lib/purchases/pages/purchases_page.dart index d48eec6..bb664ce 100644 --- a/lib/purchases/pages/purchases_page.dart +++ b/lib/purchases/pages/purchases_page.dart @@ -8,7 +8,7 @@ import 'purchase_successful_page.dart'; class PurchasesPage extends StatelessWidget { static const id = 'purchases_page'; - const PurchasesPage({Key? key}) : super(key: key); + const PurchasesPage({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/settings/widgets/settings_page.dart b/lib/settings/widgets/settings_page.dart index 2334a6d..11447f0 100644 --- a/lib/settings/widgets/settings_page.dart +++ b/lib/settings/widgets/settings_page.dart @@ -18,7 +18,7 @@ import '../settings.dart'; class SettingsPage extends StatelessWidget { static const String id = '/settings'; - const SettingsPage({Key? key}) : super(key: key); + const SettingsPage({super.key}); @override Widget build(BuildContext context) { @@ -34,7 +34,7 @@ class SettingsPage extends StatelessWidget { } class SettingsView extends StatelessWidget { - const SettingsView({Key? key}) : super(key: key); + const SettingsView({super.key}); @override Widget build(BuildContext context) { @@ -109,10 +109,9 @@ class _SectionCard extends StatelessWidget { final List children; const _SectionCard({ - Key? key, required this.title, required this.children, - }) : super(key: key); + }); @override Widget build(BuildContext context) { @@ -258,7 +257,7 @@ class _UnitFilterSettingsState extends State<_UnitFilterSettings> { }, ); }, - ).toList() + ) ]; return SingleChildScrollView( diff --git a/lib/shortcuts/app_shortcuts.dart b/lib/shortcuts/app_shortcuts.dart index d88f565..b77c1e9 100644 --- a/lib/shortcuts/app_shortcuts.dart +++ b/lib/shortcuts/app_shortcuts.dart @@ -10,9 +10,9 @@ class AppShortcuts extends StatelessWidget { final Widget child; AppShortcuts({ - Key? key, + super.key, required this.child, - }) : super(key: key); + }); final _shortcuts = { const SingleActivator( From 595abe926d723980b750d00d4f599b813dc0941b Mon Sep 17 00:00:00 2001 From: Kristen McWilliam <9575627+Merrit@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:46:48 -0400 Subject: [PATCH 04/10] chore: apply lint for switch type comparison The explanation of the lint is so obtuse, I'm not sure what it's trying to say. I'm just going to apply the fix and move on. The tests still pass. --- lib/calculator/validators/cost_validator.dart | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/calculator/validators/cost_validator.dart b/lib/calculator/validators/cost_validator.dart index 788d5a2..9547011 100644 --- a/lib/calculator/validators/cost_validator.dart +++ b/lib/calculator/validators/cost_validator.dart @@ -52,15 +52,15 @@ class _CostByWeightValidator { // Convert to grams as the base unit for comparisons. static double _getUnitAsGrams(Unit unit, double quantity) { switch (unit.runtimeType) { - case Milligram: + case const (Milligram): return quantity / 1000; - case Gram: + case const (Gram): return quantity; - case Kilogram: + case const (Kilogram): return quantity * 1000; - case Ounce: + case const (Ounce): return quantity * 28.35; - case Pound: + case const (Pound): return quantity * 454; default: throw Exception('Error converting weight type'); @@ -123,13 +123,13 @@ class _CostByVolumeValidator { // Convert to Millilitres as the base unit for comparisons. static double _getUnitAsMilliletres(Unit unit, double quantity) { switch (unit.runtimeType) { - case Millilitre: + case const (Millilitre): return quantity; - case Litre: + case const (Litre): return quantity * 1000; - case FluidOunce: + case const (FluidOunce): return quantity * 29.574; - case Quart: + case const (Quart): return quantity * 946; default: throw Exception('Error converting volume type'); From 23556723e7bbd6d800efee5a72a05bcdb6ebfb2b Mon Sep 17 00:00:00 2001 From: Kristen McWilliam <9575627+Merrit@users.noreply.github.com> Date: Tue, 6 Aug 2024 14:34:05 -0400 Subject: [PATCH 05/10] chore: regenerate android project files So they are updated for the new Flutter version. --- .metadata | 10 ++-- android/app/build.gradle | 54 ++++++++----------- android/app/src/main/AndroidManifest.xml | 24 ++++++--- .../unit_bargain_hunter/MainActivity.kt | 3 +- android/build.gradle | 17 +----- android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/settings.gradle | 19 ++++--- devtools_options.yaml | 3 ++ pubspec.lock | 44 +++++++-------- pubspec.yaml | 6 +-- 11 files changed, 89 insertions(+), 95 deletions(-) rename android/app/src/main/kotlin/{com/example => codes/merritt}/unit_bargain_hunter/MainActivity.kt (66%) create mode 100644 devtools_options.yaml diff --git a/.metadata b/.metadata index ea58cb8..e720147 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: "e1e47221e86272429674bec4f1bd36acc4fc7b77" + revision: "b0850beeb25f6d5b10426284f506557f66181b36" channel: "stable" project_type: app @@ -13,11 +13,11 @@ project_type: app migration: platforms: - platform: root - create_revision: e1e47221e86272429674bec4f1bd36acc4fc7b77 - base_revision: e1e47221e86272429674bec4f1bd36acc4fc7b77 + create_revision: b0850beeb25f6d5b10426284f506557f66181b36 + base_revision: b0850beeb25f6d5b10426284f506557f66181b36 - platform: android - create_revision: e1e47221e86272429674bec4f1bd36acc4fc7b77 - base_revision: e1e47221e86272429674bec4f1bd36acc4fc7b77 + create_revision: b0850beeb25f6d5b10426284f506557f66181b36 + base_revision: b0850beeb25f6d5b10426284f506557f66181b36 # User provided section diff --git a/android/app/build.gradle b/android/app/build.gradle index 3f0112b..55ebed2 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,25 +1,26 @@ plugins { id "com.android.application" id "kotlin-android" + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id "dev.flutter.flutter-gradle-plugin" } def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') +def localPropertiesFile = rootProject.file("local.properties") if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> + localPropertiesFile.withReader("UTF-8") { reader -> localProperties.load(reader) } } -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +def flutterVersionCode = localProperties.getProperty("flutter.versionCode") if (flutterVersionCode == null) { - flutterVersionCode = '1' + flutterVersionCode = "1" } -def flutterVersionName = localProperties.getProperty('flutter.versionName') +def flutterVersionName = localProperties.getProperty("flutter.versionName") if (flutterVersionName == null) { - flutterVersionName = '1.0' + flutterVersionName = "1.0" } def keystoreProperties = new Properties() @@ -34,32 +35,24 @@ if (keystorePropertiesFile.exists()) { } android { - namespace "codes.merritt.bargain" - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion + namespace = "codes.merritt.bargain" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "codes.merritt.bargain" + applicationId = "codes.merritt.bargain" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutterVersionCode.toInteger() + versionName = flutterVersionName } signingConfigs { @@ -71,18 +64,13 @@ android { } } - buildTypes { - release { - signingConfig signingConfigs.release - ndk { - debugSymbolLevel 'SYMBOL_TABLE' - } + buildTypes { + release { + signingConfig = signingConfigs.release } } } flutter { - source '../..' + source = "../.." } - -dependencies {} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 026e64d..27a93e9 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -7,6 +7,7 @@ android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" + android:taskAffinity="" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" @@ -16,12 +17,12 @@ while the Flutter UI initializes. After that, this theme continues to determine the Window background behind the Flutter UI. --> + android:name="io.flutter.embedding.android.NormalTheme" + android:resource="@style/NormalTheme" + /> - - + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/unit_bargain_hunter/MainActivity.kt b/android/app/src/main/kotlin/codes/merritt/unit_bargain_hunter/MainActivity.kt similarity index 66% rename from android/app/src/main/kotlin/com/example/unit_bargain_hunter/MainActivity.kt rename to android/app/src/main/kotlin/codes/merritt/unit_bargain_hunter/MainActivity.kt index 4d3b29b..038ccf3 100644 --- a/android/app/src/main/kotlin/com/example/unit_bargain_hunter/MainActivity.kt +++ b/android/app/src/main/kotlin/codes/merritt/unit_bargain_hunter/MainActivity.kt @@ -2,5 +2,4 @@ package codes.merritt.bargain import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity: FlutterActivity() diff --git a/android/build.gradle b/android/build.gradle index f7eb7f6..d2ffbff 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,16 +1,3 @@ -buildscript { - ext.kotlin_version = '1.7.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.3.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() @@ -18,12 +5,12 @@ allprojects { } } -rootProject.buildDir = '../build' +rootProject.buildDir = "../build" subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { - project.evaluationDependsOn(':app') + project.evaluationDependsOn(":app") } tasks.register("clean", Delete) { diff --git a/android/gradle.properties b/android/gradle.properties index 94adc3a..3b5b324 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,3 @@ -org.gradle.jvmargs=-Xmx1536M +org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 3c472b9..e1ca574 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip diff --git a/android/settings.gradle b/android/settings.gradle index 55c4ca8..536165d 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -5,16 +5,21 @@ pluginManagement { def flutterSdkPath = properties.getProperty("flutter.sdk") assert flutterSdkPath != null, "flutter.sdk not set in local.properties" return flutterSdkPath - } - settings.ext.flutterSdkPath = flutterSdkPath() + }() - includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false + repositories { + google() + mavenCentral() + gradlePluginPortal() } } -include ":app" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.3.0" apply false + id "org.jetbrains.kotlin.android" version "1.7.10" apply false +} -apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" +include ":app" diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 0000000..fa0b357 --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,3 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: diff --git a/pubspec.lock b/pubspec.lock index dea6027..e32ef2b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -555,10 +555,10 @@ packages: dependency: "direct main" description: name: in_app_purchase_android - sha256: "3d84d1a001fa138bed09e0cd95e9dbce268dce8b6f63bda7cf69cbf9135fbfbb" + sha256: "4c3f46f736a31902ec5392a75f41ea1ad292f27db00ed51153f3912d076d0efa" url: "https://pub.dev" source: hosted - version: "0.3.6" + version: "0.3.6+5" in_app_purchase_platform_interface: dependency: transitive description: @@ -579,10 +579,10 @@ packages: dependency: "direct main" description: name: intl - sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf url: "https://pub.dev" source: hosted - version: "0.18.1" + version: "0.19.0" io: dependency: transitive description: @@ -619,26 +619,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" url: "https://pub.dev" source: hosted - version: "10.0.0" + version: "10.0.4" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.3" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.1" lints: dependency: transitive description: @@ -691,10 +691,10 @@ packages: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.12.0" mime: dependency: transitive description: @@ -1048,26 +1048,26 @@ packages: dependency: transitive description: name: test - sha256: a1f7595805820fcc05e5c52e3a231aedd0b72972cb333e8c738a8b1239448b6f + sha256: "7ee446762c2c50b3bd4ea96fe13ffac69919352bd3b4b17bac3f3465edc58073" url: "https://pub.dev" source: hosted - version: "1.24.9" + version: "1.25.2" test_api: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.0" test_core: dependency: transitive description: name: test_core - sha256: a757b14fc47507060a162cc2530d9a4a2f92f5100a952c7443b5cad5ef5b106a + sha256: "2bc4b4ecddd75309300d8096f781c0e3280ca1ef85beda558d33fcbedc2eead4" url: "https://pub.dev" source: hosted - version: "0.5.9" + version: "0.6.0" timing: dependency: transitive description: @@ -1168,10 +1168,10 @@ packages: dependency: transitive description: name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "14.2.1" watcher: dependency: transitive description: @@ -1254,5 +1254,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.3.0 <4.0.0" - flutter: ">=3.19.2" + dart: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" diff --git a/pubspec.yaml b/pubspec.yaml index 1ae2f7c..ba82417 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -32,9 +32,9 @@ dependencies: hive: ^2.1.0 hive_flutter: ^1.1.0 http: ^1.0.0 - in_app_purchase: ^3.0.7 - in_app_purchase_android: ^0.3.6 - intl: ^0.18.0 + in_app_purchase: ^3.2.0 + in_app_purchase_android: ^0.3.6+5 + intl: ^0.19.0 json_annotation: ^4.8.0 logger: ^2.0.1 multi_split_view: ^2.1.0 From 3e5d91ed933db777e66c5ea71fa3eda7681c24dc Mon Sep 17 00:00:00 2001 From: Kristen McWilliam <9575627+Merrit@users.noreply.github.com> Date: Tue, 6 Aug 2024 15:12:39 -0400 Subject: [PATCH 06/10] feat: add context menu for desktop & web Allows right-clicking the sheet in the side panel on desktop and web which opens a context menu to easily remove the sheet. --- android/app/build.gradle | 3 +- .../widgets/side_panel/sheet_tile.dart | 72 ++++++--- .../widgets/side_panel/side_panel_view.dart | 10 +- pubspec.lock | 148 +++++++++++++----- pubspec.yaml | 1 + 5 files changed, 160 insertions(+), 74 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 55ebed2..03c1f4d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -49,7 +49,8 @@ android { applicationId = "codes.merritt.bargain" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdk = flutter.minSdkVersion + // minSdk = flutter.minSdkVersion + minSdk = 23 // Specified to accomodate super_context_menu targetSdk = flutter.targetSdkVersion versionCode = flutterVersionCode.toInteger() versionName = flutterVersionName diff --git a/lib/calculator/widgets/side_panel/sheet_tile.dart b/lib/calculator/widgets/side_panel/sheet_tile.dart index 5c17502..48ccb3e 100644 --- a/lib/calculator/widgets/side_panel/sheet_tile.dart +++ b/lib/calculator/widgets/side_panel/sheet_tile.dart @@ -1,7 +1,9 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:helpers/helpers.dart'; +import 'package:super_context_menu/super_context_menu.dart'; import '../../../purchases/cubit/purchases_cubit.dart'; import '../../../purchases/pages/purchases_page.dart'; @@ -56,32 +58,27 @@ class _SheetTileState extends State { .proPurchased; final bool proFeaturesDisabled = !proPurchased && (index > 4); - // List buildListContextMenuItems(Sheet sheet) { - // return [ - // PopupMenuItem( - // child: const Text( - // 'Remove', - // style: TextStyle(color: Colors.red), - // ), - // onTap: () => _showConfirmRemovalDialog(context, sheet), - // ), - // ]; - // } - final Widget? subtitle = (sheet.subtitle != null) // ? Text(sheet.subtitle!) : null; - return Opacity( - opacity: (proFeaturesDisabled) ? 0.4 : 1.0, - child: GestureDetector( - // onSecondaryTapUp: (TapUpDetails details) { - // showContextMenu( - // context: context, - // offset: details.globalPosition, - // items: buildListContextMenuItems(sheet), - // ); - // }, + return ContextMenuWidget( + // Context menu is disabled on mobile, as it conflicts with the long + // press to reorder sheets. + // Instead, users can access such settings via the app bar. + contextMenuIsAllowed: (_) => !defaultTargetPlatform.isMobile, + menuProvider: (_) { + return Menu( + children: [ + MenuAction( + title: 'Remove', + callback: () => _showConfirmRemovalDialog(context, sheet), + ), + ], + ); + }, + child: Opacity( + opacity: (proFeaturesDisabled) ? 0.4 : 1.0, child: MouseRegion( onEnter: (_) => setState(() => isHovered = true), onExit: (_) => setState(() => isHovered = false), @@ -127,4 +124,35 @@ class _SheetTileState extends State { ), ); } + + /// Shows a dialog to confirm the removal of a [Sheet]. + Future _showConfirmRemovalDialog( + BuildContext context, + Sheet sheet, + ) async { + final bool? result = await showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: const Text('Remove sheet?'), + content: Text( + 'Are you sure you want to remove the sheet "${sheet.name}"?'), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context, false), + child: const Text('Cancel'), + ), + TextButton( + onPressed: () => Navigator.pop(context, true), + child: const Text('Remove'), + ), + ], + ); + }, + ); + + if (result == true) { + calcCubit.removeSheet(sheet); + } + } } diff --git a/lib/calculator/widgets/side_panel/side_panel_view.dart b/lib/calculator/widgets/side_panel/side_panel_view.dart index fa2f324..3b46c67 100644 --- a/lib/calculator/widgets/side_panel/side_panel_view.dart +++ b/lib/calculator/widgets/side_panel/side_panel_view.dart @@ -1,7 +1,6 @@ import 'package:badges/badges.dart' as badges; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:helpers/helpers.dart'; import '../../../app/app_widget.dart'; import '../../../app/widgets/widgets.dart'; @@ -24,7 +23,6 @@ class _SidePanelState extends State { @override Widget build(BuildContext context) { final calcCubit = context.read(); - final mediaQuery = MediaQuery.of(context); final addSheetButton = Opacity( opacity: 0.8, @@ -80,13 +78,7 @@ class _SidePanelState extends State { ], ); - if (mediaQuery.isHandset) return panelBody; - - return Container( - color: Theme.of(context).cardColor, - width: 180, - child: panelBody, - ); + return panelBody; } } diff --git a/pubspec.lock b/pubspec.lock index e32ef2b..fdbd6ca 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: _discoveryapis_commons - sha256: f8bb1fdbd77f3d5c1d62b5b0eca75fbf1e41bf4f6c62628f880582e2182ae45d + sha256: "113c4100b90a5b70a983541782431b82168b3cae166ab130649c36eb3559d498" url: "https://pub.dev" source: hosted - version: "1.0.6" + version: "1.0.7" _fe_analyzer_shared: dependency: transitive description: @@ -101,10 +101,10 @@ packages: dependency: transitive description: name: build_daemon - sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" build_resolvers: dependency: transitive description: @@ -117,18 +117,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22" + sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7" url: "https://pub.dev" source: hosted - version: "2.4.9" + version: "2.4.11" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" + sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe url: "https://pub.dev" source: hosted - version: "7.3.0" + version: "7.3.1" built_collection: dependency: transitive description: @@ -213,10 +213,10 @@ packages: dependency: transitive description: name: coverage - sha256: "3945034e86ea203af7a056d98e98e42a5518fff200d6e8e6647e1886b07e936e" + sha256: "576aaab8b1abdd452e0f656c3e73da9ead9d7880e15bdc494189d9c1a1baf0db" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.0" crypto: dependency: transitive description: @@ -233,6 +233,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.6" + device_info_plus: + dependency: transitive + description: + name: device_info_plus + sha256: "93429694c9253d2871b3af80cf11b3cbb5c65660d402ed7bf69854ce4a089f82" + url: "https://pub.dev" + source: hosted + version: "10.1.1" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba" + url: "https://pub.dev" + source: hosted + version: "7.0.1" diff_match_patch: dependency: transitive description: @@ -386,10 +402,10 @@ packages: dependency: transitive description: name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "4.0.0" get_it: dependency: transitive description: @@ -418,10 +434,10 @@ packages: dependency: transitive description: name: google_identity_services_web - sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" + sha256: "5be191523702ba8d7a01ca97c17fca096822ccf246b0a9f11923a6ded06199b6" url: "https://pub.dev" source: hosted - version: "0.3.1+1" + version: "0.3.1+4" google_sign_in: dependency: "direct main" description: @@ -434,10 +450,10 @@ packages: dependency: transitive description: name: google_sign_in_android - sha256: "7647893c65e6720973f0e579051c8f84b877b486614d9f70a404259c41a4632e" + sha256: "5a47ebec9af97daf0822e800e4f101c3340b5ebc3f6898cf860c1a71b53cf077" url: "https://pub.dev" source: hosted - version: "6.1.23" + version: "6.1.28" google_sign_in_ios: dependency: transitive description: @@ -458,18 +474,18 @@ packages: dependency: transitive description: name: google_sign_in_web - sha256: d606264c7a1a526a3aa79d938b85a601d8589731a478bd4a3dcbdeb14a572228 + sha256: "042805a21127a85b0dc46bba98a37926f17d2439720e8a459d27045d8ef68055" url: "https://pub.dev" source: hosted - version: "0.12.4+1" + version: "0.12.4+2" googleapis: dependency: "direct main" description: name: googleapis - sha256: "4eefba93b5f714d6c2bcc1695ff6fb09d36684d2a06912285d3981069796da10" + sha256: "864f222aed3f2ff00b816c675edf00a39e2aaf373d728d8abec30b37bee1a81c" url: "https://pub.dev" source: hosted - version: "13.1.0" + version: "13.2.0" googleapis_auth: dependency: "direct main" description: @@ -482,10 +498,10 @@ packages: dependency: transitive description: name: graphs - sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" helpers: dependency: "direct main" description: @@ -571,10 +587,10 @@ packages: dependency: transitive description: name: in_app_purchase_storekit - sha256: a4b523cdad26d9c81fe1f35636b9d46c459f6c07b84a93ae5cbdd93b21670eea + sha256: "28a0577d9f4a5bdfb7aad96c347193e1225cc335c8003fbb98b875a67dab34cc" url: "https://pub.dev" source: hosted - version: "0.3.17+2" + version: "0.3.17+3" intl: dependency: "direct main" description: @@ -591,14 +607,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.4" + irondash_engine_context: + dependency: transitive + description: + name: irondash_engine_context + sha256: cd7b769db11a2b5243b037c8a9b1ecaef02e1ae27a2d909ffa78c1dad747bb10 + url: "https://pub.dev" + source: hosted + version: "0.5.4" + irondash_message_channel: + dependency: transitive + description: + name: irondash_message_channel + sha256: b4101669776509c76133b8917ab8cfc704d3ad92a8c450b92934dd8884a2f060 + url: "https://pub.dev" + source: hosted + version: "0.7.0" js: dependency: transitive description: name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf url: "https://pub.dev" source: hosted - version: "0.6.7" + version: "0.7.1" json_annotation: dependency: "direct main" description: @@ -763,18 +795,18 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: b93d8b4d624b4ea19b0a5a208b2d6eff06004bc3ce74c06040b120eeadd00ce0 + sha256: "4de6c36df77ffbcef0a5aefe04669d33f2d18397fea228277b852a2d4e58e860" url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "8.0.1" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: f49918f3433a3146047372f9d4f1f847511f2acd5cd030e1f44fe5a50036b70e + sha256: ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66 url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.0.1" path: dependency: transitive description: @@ -787,18 +819,18 @@ packages: dependency: "direct main" description: name: path_provider - sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 + sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378 url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d + sha256: "490539678396d4c3c0b06efdaab75ae60675c3e0c66f72bc04c2e2c1e0e2abeb" url: "https://pub.dev" source: hosted - version: "2.2.4" + version: "2.2.9" path_provider_foundation: dependency: transitive description: @@ -839,6 +871,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.0.2" + pixel_snap: + dependency: transitive + description: + name: pixel_snap + sha256: "677410ea37b07cd37ecb6d5e6c0d8d7615a7cf3bd92ba406fd1ac57e937d1fb0" + url: "https://pub.dev" + source: hosted + version: "0.1.5" platform: dependency: transitive description: @@ -1008,10 +1048,10 @@ packages: dependency: "direct main" description: name: store_checker - sha256: c9c1a93f11fa756fea23a2a08d7e54e84626a8d3c759cf49fc694a3a5afdc705 + sha256: "9e5841e4f922cc7f0283323ff3c78fd31ace14c22e988525d33355c35d7c815a" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.6.0" stream_channel: dependency: transitive description: @@ -1036,6 +1076,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + super_context_menu: + dependency: "direct main" + description: + name: super_context_menu + sha256: f261f4bbc191dc37548d0b9520203290504a9b1c08982aef5f4b12ac647f1188 + url: "https://pub.dev" + source: hosted + version: "0.8.18" + super_native_extensions: + dependency: transitive + description: + name: super_native_extensions + sha256: b03f19e54744b65940a7c2cb4f93abd4819b5355aa3464d7b3c9a013b6b76db1 + url: "https://pub.dev" + source: hosted + version: "0.8.18" term_glyph: dependency: transitive description: @@ -1096,10 +1152,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "17cd5e205ea615e2c6ea7a77323a11712dffa0720a8a90540db57a01347f9ad9" + sha256: "94d8ad05f44c6d4e2ffe5567ab4d741b82d62e3c8e288cc1fcea45965edf47c9" url: "https://pub.dev" source: hosted - version: "6.3.2" + version: "6.3.8" url_launcher_ios: dependency: transitive description: @@ -1136,10 +1192,10 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" + sha256: a36e2d7981122fa185006b216eb6b5b97ede3f9a54b7a511bc966971ab98d049 url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" url_launcher_windows: dependency: transitive description: @@ -1208,10 +1264,18 @@ packages: dependency: transitive description: name: win32 - sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb" + sha256: "015002c060f1ae9f41a818f2d5640389cc05283e368be19dc8d77cecb43c40c9" + url: "https://pub.dev" + source: hosted + version: "5.5.3" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: "723b7f851e5724c55409bb3d5a32b203b3afe8587eaf5dafb93a5fed8ecda0d6" url: "https://pub.dev" source: hosted - version: "5.5.0" + version: "1.1.4" window_manager: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index ba82417..85c5395 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -42,6 +42,7 @@ dependencies: path_provider: ^2.0.10 pub_semver: ^2.0.0 store_checker: ^1.0.0 + super_context_menu: ^0.8.17 url_launcher: ^6.0.20 uuid: ^4.4.2 window_manager: ^0.3.0 From fc4072e543910e1df00af8597b44a3c697cb9007 Mon Sep 17 00:00:00 2001 From: Kristen McWilliam <9575627+Merrit@users.noreply.github.com> Date: Tue, 6 Aug 2024 16:05:12 -0400 Subject: [PATCH 07/10] ci: update java for android builds Needed for updated version of package_info_plus --- .github/workflows/build-android.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 561d011..8170964 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -28,10 +28,10 @@ jobs: uses: subosito/flutter-action@v2.3.0 - name: Install Android dependencies - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: - distribution: "zulu" - java-version: "12.x" + distribution: 'zulu' + java-version: '17' - name: Checkout code uses: actions/checkout@v3 From f613a192f2c9d58a33208ad901fb41a512f5f237 Mon Sep 17 00:00:00 2001 From: Kristen McWilliam <9575627+Merrit@users.noreply.github.com> Date: Thu, 8 Aug 2024 13:28:31 -0400 Subject: [PATCH 08/10] refactor: rename ScrollingItemsList to _MainView Better describes what this widget does. --- lib/calculator/calculator_page.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/calculator/calculator_page.dart b/lib/calculator/calculator_page.dart index dc51b8c..6a50f58 100644 --- a/lib/calculator/calculator_page.dart +++ b/lib/calculator/calculator_page.dart @@ -172,7 +172,7 @@ class _CalculatorViewState extends State { onTap: () => focusNode.requestFocus(), child: Focus( focusNode: focusNode, - child: const ScrollingItemsList(), + child: const _MainView(), ), ), ], @@ -182,8 +182,8 @@ class _CalculatorViewState extends State { } } -class ScrollingItemsList extends StatelessWidget { - const ScrollingItemsList({super.key}); +class _MainView extends StatelessWidget { + const _MainView(); @override Widget build(BuildContext context) { From e1c60a8459e3542a30f02a45fed30c1c85d979d0 Mon Sep 17 00:00:00 2001 From: Kristen McWilliam <9575627+Merrit@users.noreply.github.com> Date: Thu, 8 Aug 2024 14:18:10 -0400 Subject: [PATCH 09/10] feat: add menu button to appbar for extra actions Actions relating to the active sheet, such as rename, reset, and delete. --- lib/calculator/calculator_page.dart | 166 +++++++++++---------- lib/calculator/widgets/sheet_settings.dart | 70 ++++----- pubspec.lock | 95 +++++++----- 3 files changed, 184 insertions(+), 147 deletions(-) diff --git a/lib/calculator/calculator_page.dart b/lib/calculator/calculator_page.dart index 6a50f58..b981b0b 100644 --- a/lib/calculator/calculator_page.dart +++ b/lib/calculator/calculator_page.dart @@ -65,9 +65,6 @@ class CalculatorPage extends StatelessWidget { appBar: appBar, drawer: drawer, body: const CalculatorView(), - floatingActionButton: const _FloatingActionButton(), - floatingActionButtonLocation: - FloatingActionButtonLocation.endTop, ), ), ), @@ -116,6 +113,9 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget { child: AppBar( centerTitle: true, title: const _SheetNameWidget(), + actions: const [ + _ExtraActionsDropdown(), + ], ), ); }, @@ -123,6 +123,51 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget { } } +/// A menu button for extra actions in the app bar related to the active sheet. +class _ExtraActionsDropdown extends StatelessWidget { + const _ExtraActionsDropdown(); + + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (context, state) { + return MenuAnchor( + menuChildren: [ + MenuItemButton( + leadingIcon: const Icon(Icons.edit), + onPressed: () => showModal(context, const SheetSettingsView()), + child: const Text('Rename sheet'), + ), + MenuItemButton( + leadingIcon: const Icon(Icons.refresh), + onPressed: () => _confirmResetSheet(context), + child: const Text('Reset sheet'), + ), + MenuItemButton( + leadingIcon: const Icon(Icons.delete), + onPressed: () { + showConfirmRemovalDialog(context, state.activeSheet!); + }, + child: const Text('Delete sheet'), + ), + ], + builder: (context, controller, child) { + return IconButton( + icon: const Icon(Icons.more_vert), + onPressed: () { + if (controller.isOpen) { + controller.close(); + } else { + controller.open(); + } + }); + }, + ); + }, + ); + } +} + class CalculatorView extends StatefulWidget { const CalculatorView({super.key}); @@ -190,9 +235,22 @@ class _MainView extends StatelessWidget { final calcCubit = context.read(); final mediaQuery = MediaQuery.of(context); - final Widget sheetNameWidget = (mediaQuery.isHandset) // - ? const SizedBox() - : const _SheetNameWidget(); + const Widget sheetNameWidget = _SheetNameWidget(); + + final Widget header; + if (mediaQuery.isHandset) { + header = const SizedBox(); + } else { + header = const Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + // Ensure name widget is centered + SizedBox(width: 8), + sheetNameWidget, + _ExtraActionsDropdown(), + ], + ); + } return BlocBuilder( builder: (context, state) { @@ -220,7 +278,7 @@ class _MainView extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - sheetNameWidget, + header, Expanded( child: SingleChildScrollView( controller: ScrollController(), @@ -262,33 +320,14 @@ class _SheetNameWidget extends StatelessWidget { Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { - final nameTextWidget = Text( - state.activeSheet!.name, - style: Theme.of(context).textTheme.titleLarge, - ); - - const smallSpacer = SizedBox(width: 4); - - const editIcon = Opacity( - opacity: 0.6, - child: Icon( - Icons.edit, - size: 18, - ), - ); - return InkWell( borderRadius: BorderRadius.circular(8), onTap: () => showModal(context, const SheetSettingsView()), child: Padding( padding: const EdgeInsets.all(8.0), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - nameTextWidget, - smallSpacer, - editIcon, - ], + child: Text( + state.activeSheet!.name, + style: Theme.of(context).textTheme.titleLarge, ), ), ); @@ -297,53 +336,28 @@ class _SheetNameWidget extends StatelessWidget { } } -class _FloatingActionButton extends StatelessWidget { - const _FloatingActionButton(); - - @override - Widget build(BuildContext context) { - final mediaQuery = MediaQuery.of(context); - - return Padding( - padding: EdgeInsets.only( - // On desktop the FAB is getting placed directly against the top of the - // screen, so we need to add some padding to make it look nicer. - top: (mediaQuery.isHandset) ? 0 : 16.0, +/// Show a dialog to confirm the user wants to reset the sheet. +void _confirmResetSheet(BuildContext context) { + showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text('Reset sheet?'), + content: const Text( + 'This will remove all items from the sheet.', ), - child: FloatingActionButton.small( - onPressed: () { - // Show a dialog to confirm the user wants to reset the sheet. - showDialog( - context: context, - builder: (context) => AlertDialog( - title: const Text('Reset sheet?'), - content: const Text( - 'This will remove all items from the sheet.', - ), - actions: [ - TextButton( - onPressed: () => Navigator.pop(context), - child: const Text('Cancel'), - ), - TextButton( - onPressed: () { - context.read().resetActiveSheet(); - Navigator.pop(context); - }, - child: const Text('Reset'), - ), - ], - ), - ); - }, - child: Transform.flip( - flipX: true, - child: const Icon( - Icons.refresh, - color: Colors.orange, - ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Cancel'), ), - ), - ); - } + TextButton( + onPressed: () { + context.read().resetActiveSheet(); + Navigator.pop(context); + }, + child: const Text('Reset'), + ), + ], + ), + ); } diff --git a/lib/calculator/widgets/sheet_settings.dart b/lib/calculator/widgets/sheet_settings.dart index cceddff..cf39c55 100644 --- a/lib/calculator/widgets/sheet_settings.dart +++ b/lib/calculator/widgets/sheet_settings.dart @@ -92,7 +92,7 @@ class _SheetSettingsViewState extends State { style: TextButton.styleFrom( padding: const EdgeInsets.all(30), ), - onPressed: () => _showConfirmRemovalDialog(context, sheet), + onPressed: () => showConfirmRemovalDialog(context, sheet), child: const Text( 'Delete List', style: TextStyle(color: Colors.red), @@ -104,39 +104,41 @@ class _SheetSettingsViewState extends State { }, ); } +} - /// Confirm the user really wants to remove the sheet. - void _showConfirmRemovalDialog(BuildContext context, Sheet sheet) { - Future.delayed( - const Duration(seconds: 0), - () => showDialog( - context: context, - builder: (context) { - return AlertDialog( - content: Text('Remove sheet "${sheet.name}?"'), - actions: [ - TextButton( - onPressed: () { - calcCubit.removeSheet(sheet); - Navigator.pushNamedAndRemoveUntil( - context, - CalculatorPage.id, - (route) => false, - ); - }, - child: const Text( - 'REMOVE', - style: TextStyle(color: Colors.red), - ), - ), - TextButton( - onPressed: () => Navigator.pop(context), - child: const Text('CLOSE'), +/// Confirm the user really wants to remove the sheet. +void showConfirmRemovalDialog(BuildContext context, Sheet sheet) { + final calcCubit = context.read(); + + Future.delayed( + const Duration(seconds: 0), + () => showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: Text('Remove sheet "${sheet.name}?"'), + actions: [ + TextButton( + onPressed: () { + calcCubit.removeSheet(sheet); + Navigator.pushNamedAndRemoveUntil( + context, + CalculatorPage.id, + (route) => false, + ); + }, + child: const Text( + 'REMOVE', + style: TextStyle(color: Colors.red), ), - ], - ); - }, - ), - ); - } + ), + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('CLOSE'), + ), + ], + ); + }, + ), + ); } diff --git a/pubspec.lock b/pubspec.lock index fdbd6ca..da508b0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,18 +13,23 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834 url: "https://pub.dev" source: hosted - version: "67.0.0" + version: "72.0.0" + _macros: + dependency: transitive + description: dart + source: sdk + version: "0.3.2" analyzer: dependency: transitive description: name: analyzer - sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139 url: "https://pub.dev" source: hosted - version: "6.4.1" + version: "6.7.0" archive: dependency: transitive description: @@ -117,18 +122,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7" + sha256: dd09dd4e2b078992f42aac7f1a622f01882a8492fef08486b27ddde929c19f04 url: "https://pub.dev" source: hosted - version: "2.4.11" + version: "2.4.12" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe + sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 url: "https://pub.dev" source: hosted - version: "7.3.1" + version: "7.3.2" built_collection: dependency: transitive description: @@ -386,10 +391,10 @@ packages: dependency: "direct dev" description: name: freezed - sha256: a434911f643466d78462625df76fd9eb13e57348ff43fe1f77bbe909522c67a1 + sha256: "44c19278dd9d89292cf46e97dc0c1e52ce03275f40a97c5a348e802a924bf40e" url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "2.5.7" freezed_annotation: dependency: "direct main" description: @@ -651,18 +656,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" url: "https://pub.dev" source: hosted - version: "10.0.4" + version: "10.0.5" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" leak_tracker_testing: dependency: transitive description: @@ -695,6 +700,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + macros: + dependency: transitive + description: + name: macros + sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" + url: "https://pub.dev" + source: hosted + version: "0.1.2-main.4" markdown: dependency: transitive description: @@ -715,18 +728,18 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.15.0" mime: dependency: transitive description: @@ -971,10 +984,10 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "2.0.0" sky_engine: dependency: transitive description: flutter @@ -1080,18 +1093,18 @@ packages: dependency: "direct main" description: name: super_context_menu - sha256: f261f4bbc191dc37548d0b9520203290504a9b1c08982aef5f4b12ac647f1188 + sha256: c21e8a2d5a2f304c5acf56b78c8fd21a36f83ea9aded513529de022dc0a077f3 url: "https://pub.dev" source: hosted - version: "0.8.18" + version: "0.8.19" super_native_extensions: dependency: transitive description: name: super_native_extensions - sha256: b03f19e54744b65940a7c2cb4f93abd4819b5355aa3464d7b3c9a013b6b76db1 + sha256: c24676825c9f3ae844676a843d45ad186f2270539ffe72be4277753e46d14e29 url: "https://pub.dev" source: hosted - version: "0.8.18" + version: "0.8.19" term_glyph: dependency: transitive description: @@ -1104,26 +1117,26 @@ packages: dependency: transitive description: name: test - sha256: "7ee446762c2c50b3bd4ea96fe13ffac69919352bd3b4b17bac3f3465edc58073" + sha256: "7ee44229615f8f642b68120165ae4c2a75fe77ae2065b1e55ae4711f6cf0899e" url: "https://pub.dev" source: hosted - version: "1.25.2" + version: "1.25.7" test_api: dependency: transitive description: name: test_api - sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.7.2" test_core: dependency: transitive description: name: test_core - sha256: "2bc4b4ecddd75309300d8096f781c0e3280ca1ef85beda558d33fcbedc2eead4" + sha256: "55ea5a652e38a1dfb32943a7973f3681a60f872f8c3a05a14664ad54ef9c6696" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.4" timing: dependency: transitive description: @@ -1192,10 +1205,10 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: a36e2d7981122fa185006b216eb6b5b97ede3f9a54b7a511bc966971ab98d049 + sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.3" url_launcher_windows: dependency: transitive description: @@ -1224,10 +1237,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc url: "https://pub.dev" source: hosted - version: "14.2.1" + version: "14.2.4" watcher: dependency: transitive description: @@ -1244,14 +1257,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + url: "https://pub.dev" + source: hosted + version: "0.1.6" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42" + sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" url: "https://pub.dev" source: hosted - version: "2.4.5" + version: "3.0.1" webkit_inspection_protocol: dependency: transitive description: @@ -1318,5 +1339,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.4.0 <4.0.0" + dart: ">=3.5.0-259.0.dev <4.0.0" flutter: ">=3.22.0" From caa11397713453011eabd7fd0be0e3e08f9b4e34 Mon Sep 17 00:00:00 2001 From: Kristen McWilliam <9575627+Merrit@users.noreply.github.com> Date: Thu, 8 Aug 2024 14:43:43 -0400 Subject: [PATCH 10/10] chore: dont use await for removal dialog --- lib/calculator/widgets/sheet_settings.dart | 55 ++++++++++------------ 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/lib/calculator/widgets/sheet_settings.dart b/lib/calculator/widgets/sheet_settings.dart index cf39c55..5284773 100644 --- a/lib/calculator/widgets/sheet_settings.dart +++ b/lib/calculator/widgets/sheet_settings.dart @@ -110,35 +110,32 @@ class _SheetSettingsViewState extends State { void showConfirmRemovalDialog(BuildContext context, Sheet sheet) { final calcCubit = context.read(); - Future.delayed( - const Duration(seconds: 0), - () => showDialog( - context: context, - builder: (context) { - return AlertDialog( - content: Text('Remove sheet "${sheet.name}?"'), - actions: [ - TextButton( - onPressed: () { - calcCubit.removeSheet(sheet); - Navigator.pushNamedAndRemoveUntil( - context, - CalculatorPage.id, - (route) => false, - ); - }, - child: const Text( - 'REMOVE', - style: TextStyle(color: Colors.red), - ), - ), - TextButton( - onPressed: () => Navigator.pop(context), - child: const Text('CLOSE'), + showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: Text('Remove sheet "${sheet.name}?"'), + actions: [ + TextButton( + onPressed: () { + calcCubit.removeSheet(sheet); + Navigator.pushNamedAndRemoveUntil( + context, + CalculatorPage.id, + (route) => false, + ); + }, + child: const Text( + 'REMOVE', + style: TextStyle(color: Colors.red), ), - ], - ); - }, - ), + ), + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('CLOSE'), + ), + ], + ); + }, ); }