From f36c0a261356157e1488d5db9f3fc68e09a6d8c4 Mon Sep 17 00:00:00 2001 From: Jan Marsh Date: Fri, 9 Sep 2022 12:05:37 +0200 Subject: [PATCH 1/4] First Version with theming --- assets/fonts/.gitkeep | 0 assets/fonts/VarelaRound-Regular.ttf | Bin 0 -> 125956 bytes lib/src/app.dart | 9 ++- lib/src/core/theme/app.theme.dart | 56 ++++++++++++++++++ lib/src/core/utils/color.util.dart | 30 ++++++++++ .../counter/presentation/counter.page.dart | 56 +++++++++++++++--- pubspec.yaml | 8 ++- 7 files changed, 146 insertions(+), 13 deletions(-) delete mode 100644 assets/fonts/.gitkeep create mode 100644 assets/fonts/VarelaRound-Regular.ttf create mode 100644 lib/src/core/theme/app.theme.dart create mode 100644 lib/src/core/utils/color.util.dart diff --git a/assets/fonts/.gitkeep b/assets/fonts/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/assets/fonts/VarelaRound-Regular.ttf b/assets/fonts/VarelaRound-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5d5cfdd040e791ecc01f3f52beb2ef7d77bd731d GIT binary patch literal 125956 zcmd442Yi&p_CGu`&+eveD(MMflR#)m*!0lT>AfX@n2>}T2!@0XA|hQtM66d4JGKQo zHdL-+xnAsELqgdW=_^?qA?ao~-L|Lp56UO!%HKyR_*rUURaE1yI)M?nLZt0ip z*|A0lxgGT7m9r}54EJjnCPcuyLU^64oLBGgsqHgb2rU!-d#22pI%{6l@+Cqf{3e8d z_|%HIbKo9?@Zc}Jr`9Z-((#tg2ZVUEUdWuy)2b_~d|y3X4*zNJ&z=ScukN;+@mz%G z_S0t7FQ^+lt)md(h|iu>Q(IYa$*G{3V6|NcTl%bu1#>JL0`frL9`ugc6|<_h7Ci!a zwUbEjLvw29)~|oX?JGoHFCij7ol{pmXW185??L*PgMOEgLb}}|5Vp`FMZNG6HNuL_ z$rk;@dQj}}4@bU%3jW*99Tmbl^xWm{T5CMHn1AXlyJ$k(o%+w-mj?FwNod;FMDflm zKU_-oyZ!g}ICuHEqtl0GLG$mYWf)Q0r7Fo(Ji+oFvj^I-bdke-7d81q5;E zzcGWx4HbKZIIDEoEK?NQGOrS_^kr> z!(ogq-KJ?`h*4q`m4fRE_u z0jHj%pUSzCiu|dC&xJzGLrzt|w*oXoS%*+lAbAb=c)|{ZJEdhfe5b>oa-4E1AL(rh z?GS}6!jA=4DlN*7k?_;YCIxskq-$XJy7Tfo1MxcfZw~J;aUk5xp(#X9F-8m$PFC8KsGN$35Vqn?G5vseCQy1c+=V7gw0jf%_+4;x^ zsvnf|ROdS}cWN_pjaD<&s6h>=Q=Ss(hO|-rnsT1qty$cZ*G>7}A0Z}liOff9>&#`? zR6i*vs1?}bg5FMMv&=E3MpiZFeIU<|+nDWmN1-ndcWy?(ECg8AH2```1*wV zB>1HI^zbS1ndnpJbIMov_VvBf*X8?+?|$EReGmH{_v_}j&2NX_Lw?FxD}=+&T4 zgMJE@!T!Nf!M6q9AN)k{OTqsP{wVmX;2(qCAz>k1Lmp_;x6Pn7b7h+wL$gB{ zhrS$^7`8ZUb=b9Gw}ssw_C(lAVgC%z2=5y{CcGkie#Fd(`4Lw}Y>K!!;{M3A$c>RN zMg>Q;je0fey{IEm-$tiK_lPcu9vM9;dPelT=oQf$V`PkfOjJyVn6#MQF#}@8#8kx0 zk2xOmOROa}I(AI#L$P~eUygk{_LH{BZKt)ZZ@awhhPF4fy|b;W?K5rnw|zG*G|my1 z9G4qc6jvJeaojg?KedzXg4?xi*STF*yZm-T+FjCadb@^pSG2pj-Hq+;YPYN1v+Z7O z_nu?1V|9F8{IY}v2`dv$Ck{#+msr_;V27_d{Mf;rbXiB=j^Q2e?f7WNy&Vs9O74`~ zsi@QN&MP`^?0i$_ot+=={9@-fJ0I-)W#=C{pX=h=CA>>Qm((srUB-9$v5UKFS=U#R zCnwKNUX;8lc}w!G$vcxzrIe*qr_4{eGUff0v#DOGZBpB%c1_Jm9g

TAg}X>eAG; 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

%%y& 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 fv3B>u!}hfj# 0.5 ? Colors.black : Colors.white; + } + + static dynamic generateMaterialColor(int primaryColorInt, Color primaryColor) { + return MaterialColor(primaryColorInt, { + 50: primaryColor.withOpacity(.1), + 100: primaryColor.withOpacity(.2), + 200: primaryColor.withOpacity(.3), + 300: primaryColor.withOpacity(.4), + 400: primaryColor.withOpacity(.5), + 500: primaryColor.withOpacity(.6), + 600: primaryColor.withOpacity(.7), + 700: primaryColor.withOpacity(.8), + 800: primaryColor.withOpacity(.9), + 900: primaryColor.withOpacity(1), + }); + } +} diff --git a/lib/src/features/counter/presentation/counter.page.dart b/lib/src/features/counter/presentation/counter.page.dart index da1bff7..e94f70f 100644 --- a/lib/src/features/counter/presentation/counter.page.dart +++ b/lib/src/features/counter/presentation/counter.page.dart @@ -1,3 +1,4 @@ +import 'package:counter_workshop/src/core/theme/app.theme.dart'; import 'package:counter_workshop/src/features/counter/data/repositories/counter.repository.dart'; import 'package:counter_workshop/src/features/counter/presentation/counter.controller.dart'; import 'package:flutter/material.dart'; @@ -24,9 +25,17 @@ class _CounterPageState extends State { }); } + void _decrementCounter() { + setState(() { + counterController.increment(); + }); + } + @override Widget build(BuildContext context) { + final theme = Theme.of(context); return Scaffold( + extendBodyBehindAppBar: true, appBar: AppBar( title: const Text('Counter Page'), ), @@ -34,20 +43,51 @@ class _CounterPageState extends State { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - const Text( - 'You have pushed the button this many times:', - ), Text( '${counterController.counterModel.value}', - style: Theme.of(context).textTheme.headline4, + style: theme.textTheme.headlineLarge, ), ], ), ), - floatingActionButton: FloatingActionButton( - onPressed: _incrementCounter, - tooltip: 'Increment', - child: const Icon(Icons.add), + floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat, + floatingActionButton: Container( + padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 40.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + _CustomCircularButton( + icon: Icons.remove, + onPressed: _decrementCounter, + ), + _CustomCircularButton( + icon: Icons.add, + onPressed: _incrementCounter, + ), + ], + ), + ), + ); + } +} + +class _CustomCircularButton extends StatelessWidget { + const _CustomCircularButton({required this.icon, this.onPressed}); + + final IconData icon; + final Function()? onPressed; + + @override + Widget build(BuildContext context) { + return OutlinedButton( + style: OutlinedButton.styleFrom( + shape: const CircleBorder(), + padding: const EdgeInsets.all(15), + ), + onPressed: onPressed, + child: Icon( + icon, + size: 50, ), ); } diff --git a/pubspec.yaml b/pubspec.yaml index 64199fa..4c5fb24 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -26,9 +26,13 @@ dev_dependencies: flutter: uses-material-design: true + fonts: + - family: VarelaRound + fonts: + - asset: assets/fonts/VarelaRound-Regular.ttf + assets: - assets/images/ # .png/.jpg images - assets/icons/ # .svg icons - assets/fonts/ # Custom Fonts - - assets/launcher_icon/ # App icon image to generate from - + - assets/launcher_icon/ # App icon image to generate from \ No newline at end of file From d2ad3b963ee6ecfb8469e4e37f4a25de7c19d051 Mon Sep 17 00:00:00 2001 From: Jan Marsh Date: Fri, 9 Sep 2022 12:27:30 +0200 Subject: [PATCH 2/4] fixing import --- lib/src/features/counter/presentation/counter.page.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/src/features/counter/presentation/counter.page.dart b/lib/src/features/counter/presentation/counter.page.dart index e94f70f..c38ab6f 100644 --- a/lib/src/features/counter/presentation/counter.page.dart +++ b/lib/src/features/counter/presentation/counter.page.dart @@ -1,4 +1,3 @@ -import 'package:counter_workshop/src/core/theme/app.theme.dart'; import 'package:counter_workshop/src/features/counter/data/repositories/counter.repository.dart'; import 'package:counter_workshop/src/features/counter/presentation/counter.controller.dart'; import 'package:flutter/material.dart'; From 5a70366547c4bba0bdff83d1bd3a69b10eb8e9c6 Mon Sep 17 00:00:00 2001 From: Jan Marsh Date: Fri, 9 Sep 2022 14:55:29 +0200 Subject: [PATCH 3/4] Adding missing decrement --- .../presentation/counter.controller.dart | 7 +++++++ .../counter/presentation/counter.page.dart | 2 +- test/widget_test.dart | 19 ++++++++++++++++--- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/src/features/counter/presentation/counter.controller.dart b/lib/src/features/counter/presentation/counter.controller.dart index fc9eec1..32d8cd4 100644 --- a/lib/src/features/counter/presentation/counter.controller.dart +++ b/lib/src/features/counter/presentation/counter.controller.dart @@ -13,4 +13,11 @@ class CounterController { counterModel.value += 1; counterRepository.updateCounter(counterModel: counterModel); } + + Future decrement() async { + if (counterModel.value > 0) { + counterModel.value -= 1; + counterRepository.updateCounter(counterModel: counterModel); + } + } } diff --git a/lib/src/features/counter/presentation/counter.page.dart b/lib/src/features/counter/presentation/counter.page.dart index c38ab6f..105f19c 100644 --- a/lib/src/features/counter/presentation/counter.page.dart +++ b/lib/src/features/counter/presentation/counter.page.dart @@ -26,7 +26,7 @@ class _CounterPageState extends State { void _decrementCounter() { setState(() { - counterController.increment(); + counterController.decrement(); }); } diff --git a/test/widget_test.dart b/test/widget_test.dart index 6031a2c..977ae37 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -13,7 +13,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { + testWidgets('Counter Smoke Test', (WidgetTester tester) async { // Build our app and trigger a frame. await tester.pumpWidget( App(counterRepository: CounterRepository(counterApi: CounterFakeApi(), counterDatabase: CounterDatabase())), @@ -24,12 +24,25 @@ void main() { expect(find.text('0'), findsOneWidget); expect(find.text('1'), findsNothing); - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); + // Tap the '-' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.remove)); + await tester.pumpAndSettle(); await tester.pumpAndSettle(const Duration(milliseconds: 300)); // Because of FakeApi delay + // Verify that our counter does not decremented. + expect(find.text('-1'), findsNothing); + expect(find.text('0'), findsOneWidget); + + await tester.tap(find.byIcon(Icons.add)); + await tester.pumpAndSettle(const Duration(milliseconds: 300)); // Because of FakeApi delay // Verify that our counter has incremented. expect(find.text('0'), findsNothing); expect(find.text('1'), findsOneWidget); + + await tester.tap(find.byIcon(Icons.remove)); + await tester.pumpAndSettle(const Duration(milliseconds: 300)); // Because of FakeApi delay + // Verify that our counter has decremented. + expect(find.text('1'), findsNothing); + expect(find.text('0'), findsOneWidget); }); } From 4d86418c4a444a55fde6d7230db296fcb0a287df Mon Sep 17 00:00:00 2001 From: Marcel Ploch Date: Thu, 19 Oct 2023 14:28:02 +0200 Subject: [PATCH 4/4] fixing version --- ios/Runner.xcodeproj/project.pbxproj | 5 +- pubspec.lock | 296 ++++++++++++++++----------- pubspec.yaml | 4 +- 3 files changed, 185 insertions(+), 120 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index b63f22c..6fd2c1b 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -171,10 +171,12 @@ /* Begin PBXShellScriptBuildPhase section */ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -185,6 +187,7 @@ }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); diff --git a/pubspec.lock b/pubspec.lock index 9f08ebd..2c5f269 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,184 +5,210 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.dartlang.org" + sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + url: "https://pub.dev" source: hosted - version: "47.0.0" + version: "64.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.dartlang.org" + sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + url: "https://pub.dev" source: hosted - version: "4.7.0" + version: "6.2.0" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.2" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" build: dependency: transitive description: name: build - url: "https://pub.dartlang.org" + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.1" build_config: dependency: transitive description: name: build_config - url: "https://pub.dartlang.org" + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" build_daemon: dependency: transitive description: name: build_daemon - url: "https://pub.dartlang.org" + sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" + url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "4.0.0" build_resolvers: dependency: transitive description: name: build_resolvers - url: "https://pub.dartlang.org" + sha256: "64e12b0521812d1684b1917bc80945625391cb9bdd4312536b1d69dcb6133ed8" + url: "https://pub.dev" source: hosted - version: "2.0.9" + version: "2.4.1" build_runner: dependency: "direct dev" description: name: build_runner - url: "https://pub.dartlang.org" + sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b" + url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.6" build_runner_core: dependency: transitive description: name: build_runner_core - url: "https://pub.dartlang.org" + sha256: c9e32d21dd6626b5c163d48b037ce906bbe428bc23ab77bcd77bb21e593b6185 + url: "https://pub.dev" source: hosted - version: "7.2.3" + version: "7.2.11" built_collection: dependency: transitive description: name: built_collection - url: "https://pub.dartlang.org" + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" source: hosted version: "5.1.1" built_value: dependency: transitive description: name: built_value - url: "https://pub.dartlang.org" + sha256: a8de5955205b4d1dbbbc267daddf2178bd737e4bab8987c04a500478c9651e74 + url: "https://pub.dev" source: hosted - version: "8.4.1" + version: "8.6.3" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" checked_yaml: dependency: transitive description: name: checked_yaml - url: "https://pub.dartlang.org" + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.3" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted version: "1.1.1" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.dartlang.org" + sha256: "1be9be30396d7e4c0db42c35ea6ccd7cc6a1e19916b5dc64d6ac216b5544d677" + url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "4.7.0" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.1" convert: dependency: transitive description: name: convert - url: "https://pub.dartlang.org" + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.1.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d + url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.dartlang.org" + sha256: abd7625e16f51f554ea244d090292945ec4d4be7bfbaf2ec8cccea568919d334 + url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.3" equatable: dependency: "direct main" description: name: equatable - url: "https://pub.dartlang.org" + sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 + url: "https://pub.dev" source: hosted version: "2.0.5" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted version: "1.3.1" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.0" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.dartlang.org" + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" flutter: dependency: "direct main" description: flutter @@ -192,9 +218,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5 + url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.0" flutter_test: dependency: "direct dev" description: flutter @@ -204,156 +231,178 @@ packages: dependency: transitive description: name: frontend_server_client - url: "https://pub.dartlang.org" + sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "3.2.0" glob: dependency: transitive description: name: glob - url: "https://pub.dartlang.org" + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" graphs: dependency: transitive description: name: graphs - url: "https://pub.dartlang.org" + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.3.1" http: dependency: "direct main" description: name: http - url: "https://pub.dartlang.org" + sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "1.1.0" http_multi_server: dependency: transitive description: name: http_multi_server - url: "https://pub.dartlang.org" + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" source: hosted version: "3.2.1" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" io: dependency: transitive description: name: io - url: "https://pub.dartlang.org" + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" js: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.7" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.dartlang.org" + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + url: "https://pub.dev" source: hosted - version: "4.6.0" + version: "4.8.1" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.0.0" logging: dependency: transitive description: name: logging - url: "https://pub.dartlang.org" + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.2.0" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" source: hosted - version: "0.12.12" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.5" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" mime: dependency: transitive description: name: mime - url: "https://pub.dartlang.org" + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.4" package_config: dependency: transitive description: name: package_config - url: "https://pub.dartlang.org" + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" source: hosted version: "2.1.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" pool: dependency: transitive description: name: pool - url: "https://pub.dartlang.org" + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" source: hosted version: "1.5.1" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.dartlang.org" + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" pubspec_parse: dependency: transitive description: name: pubspec_parse - url: "https://pub.dartlang.org" + sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 + url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.3" shelf: dependency: transitive description: name: shelf - url: "https://pub.dartlang.org" + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.4.1" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - url: "https://pub.dartlang.org" + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.4" sky_engine: dependency: transitive description: flutter @@ -363,92 +412,105 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" stream_transform: dependency: transitive description: name: stream_transform - url: "https://pub.dartlang.org" + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + url: "https://pub.dev" source: hosted - version: "0.4.12" + version: "0.5.1" timing: dependency: transitive description: name: timing - url: "https://pub.dartlang.org" + sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.1" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" watcher: dependency: transitive description: name: watcher - url: "https://pub.dartlang.org" + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" web_socket_channel: dependency: transitive description: name: web_socket_channel - url: "https://pub.dartlang.org" + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.dartlang.org" + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" sdks: - dart: ">=2.18.0 <3.0.0" + dart: ">=3.0.0 <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 4c5fb24..278e214 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,13 +14,13 @@ dependencies: cupertino_icons: ^1.0.2 equatable: ^2.0.5 - http: ^0.13.5 + http: ^1.1.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^2.0.0 + flutter_lints: ^3.0.0 build_runner: ^2.2.0 flutter: