diff --git a/.github/actions/publish/action.yml b/.github/actions/publish/action.yml index 835a8a48..295a8203 100644 --- a/.github/actions/publish/action.yml +++ b/.github/actions/publish/action.yml @@ -15,7 +15,7 @@ runs: - name: Setup Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 3.24.2 + flutter-version: 3.27.1 - name: Get ID Token uses: actions/github-script@v6 diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 19e7126e..b944516e 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -6,7 +6,7 @@ runs: - name: Set up Flutter uses: subosito/flutter-action@ea686d7c56499339ad176e9f19c516ff6cf05a31 with: - flutter-version: 3.24.2 + flutter-version: 3.27.1 cache: true - name: Set up environment paths diff --git a/optimus/lib/src/common/field_wrapper.dart b/optimus/lib/src/common/field_wrapper.dart index c01d03df..7a4f039c 100644 --- a/optimus/lib/src/common/field_wrapper.dart +++ b/optimus/lib/src/common/field_wrapper.dart @@ -503,7 +503,7 @@ class _ColoredTransitionState extends State<_ColoredTransition> { color: widget.state == OptimusStatusBarState.empty ? _previousState .getStatusBarColor(context.tokens) - .withOpacity(0.5) + .withValues(alpha: 0.5) : widget.state.getStatusBarColor(context.tokens), ), ); diff --git a/optimus/lib/src/common/state_property.dart b/optimus/lib/src/common/state_property.dart deleted file mode 100644 index 3ea11d5a..00000000 --- a/optimus/lib/src/common/state_property.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/widgets.dart'; - -class InteractiveStateColor extends WidgetStateProperty { - InteractiveStateColor({ - required this.defaultColor, - required this.disabled, - required this.pressed, - required this.hovered, - }); - - final Color disabled; - final Color pressed; - final Color hovered; - final Color defaultColor; - - @override - Color resolve(Set states) { - if (states.isDisabled) return disabled; - if (states.isPressed) return pressed; - if (states.isHovered) return hovered; - - return defaultColor; - } -} - -extension States on Set { - bool get isDisabled => contains(WidgetState.disabled); - bool get isPressed => contains(WidgetState.pressed); - bool get isHovered => contains(WidgetState.hovered); -} diff --git a/optimus/lib/src/lists/nav_list_tile.dart b/optimus/lib/src/lists/nav_list_tile.dart index 5064ff4c..2935c358 100644 --- a/optimus/lib/src/lists/nav_list_tile.dart +++ b/optimus/lib/src/lists/nav_list_tile.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:optimus/optimus.dart'; import 'package:optimus/src/common/gesture_wrapper.dart'; -import 'package:optimus/src/common/state_property.dart'; import 'package:optimus/src/lists/base_list_tile.dart'; /// Lists are vertically organized groups of data. Optimized for reading @@ -83,12 +82,12 @@ class _OptimusNavListTileState extends State } } - InteractiveStateColor get _backgroundColor => InteractiveStateColor( - defaultColor: tokens.backgroundInteractiveNeutralSubtleDefault, - disabled: Colors.transparent, - pressed: tokens.backgroundInteractiveNeutralSubtleActive, - hovered: tokens.backgroundInteractiveNeutralSubtleHover, - ); + WidgetStateColor get _backgroundColor => WidgetStateColor.fromMap({ + WidgetState.disabled: Colors.transparent, + WidgetState.pressed: tokens.backgroundInteractiveNeutralSubtleActive, + WidgetState.hovered: tokens.backgroundInteractiveNeutralSubtleHover, + WidgetState.any: tokens.backgroundInteractiveNeutralSubtleDefault, + }); void _handleHoverChanged(bool isHovered) { setState(() => _controller.update(WidgetState.hovered, isHovered)); diff --git a/optimus/lib/src/radio/radio_circle.dart b/optimus/lib/src/radio/radio_circle.dart index 9b90b63c..7045de71 100644 --- a/optimus/lib/src/radio/radio_circle.dart +++ b/optimus/lib/src/radio/radio_circle.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:optimus/optimus.dart'; -import 'package:optimus/src/common/state_property.dart'; class RadioCircle extends StatelessWidget { const RadioCircle({ @@ -13,28 +12,28 @@ class RadioCircle extends StatelessWidget { final bool isSelected; final WidgetStatesController controller; - InteractiveStateColor _getBorderColor(OptimusTokens tokens) => - InteractiveStateColor( - defaultColor: isSelected - ? tokens.backgroundInteractivePrimaryDefault - : tokens.borderInteractiveSecondaryDefault, - disabled: + WidgetStateColor _getBorderColor(OptimusTokens tokens) => + WidgetStateColor.fromMap({ + WidgetState.disabled: isSelected ? tokens.backgroundDisabled : tokens.borderDisabled, - pressed: isSelected + WidgetState.pressed: isSelected ? tokens.backgroundInteractivePrimaryActive : tokens.borderInteractiveSecondaryActive, - hovered: isSelected + WidgetState.hovered: isSelected ? tokens.backgroundInteractivePrimaryHover : tokens.borderInteractiveSecondaryHover, - ); + WidgetState.any: isSelected + ? tokens.backgroundInteractivePrimaryDefault + : tokens.borderInteractiveSecondaryDefault, + }); - InteractiveStateColor _getFillColor(OptimusTokens tokens) => - InteractiveStateColor( - defaultColor: tokens.backgroundInteractiveNeutralSubtleDefault, - disabled: tokens.backgroundInteractiveNeutralSubtleDefault, - pressed: tokens.backgroundInteractiveNeutralSubtleActive, - hovered: tokens.backgroundInteractiveNeutralSubtleHover, - ); + WidgetStateColor _getFillColor(OptimusTokens tokens) => + WidgetStateColor.fromMap({ + WidgetState.disabled: tokens.backgroundInteractiveNeutralSubtleDefault, + WidgetState.pressed: tokens.backgroundInteractiveNeutralSubtleActive, + WidgetState.hovered: tokens.backgroundInteractiveNeutralSubtleHover, + WidgetState.any: tokens.backgroundInteractiveNeutralSubtleDefault, + }); @override Widget build(BuildContext context) { diff --git a/optimus/lib/src/selection_card.dart b/optimus/lib/src/selection_card.dart index c5f52719..acb92055 100644 --- a/optimus/lib/src/selection_card.dart +++ b/optimus/lib/src/selection_card.dart @@ -3,7 +3,6 @@ import 'package:flutter/widgets.dart'; import 'package:optimus/optimus.dart'; import 'package:optimus/src/checkbox/checkbox_tick.dart'; import 'package:optimus/src/common/gesture_wrapper.dart'; -import 'package:optimus/src/common/state_property.dart'; import 'package:optimus/src/radio/radio_circle.dart'; enum OptimusSelectionCardVariant { vertical, horizontal } @@ -75,45 +74,41 @@ class _OptimusSelectionCardState extends State super.dispose(); } - InteractiveStateColor get _backgroundColor => InteractiveStateColor( - defaultColor: widget.isSelected - ? tokens.backgroundInteractiveSecondaryDefault - : tokens.backgroundStaticFlat, - disabled: tokens.backgroundStaticFlat, - pressed: widget.isSelected + WidgetStateColor get _backgroundColor => WidgetStateColor.fromMap({ + WidgetState.disabled: tokens.backgroundStaticFlat, + WidgetState.pressed: widget.isSelected ? tokens.backgroundInteractiveSecondaryActive : tokens.backgroundStaticFlat, - hovered: widget.isSelected + WidgetState.hovered: widget.isSelected ? tokens.backgroundInteractiveSecondaryHover : tokens.backgroundStaticFlat, - ); + WidgetState.any: widget.isSelected + ? tokens.backgroundInteractiveSecondaryDefault + : tokens.backgroundStaticFlat, + }); - InteractiveStateColor get _borderColor => InteractiveStateColor( - defaultColor: widget.isSelected - ? tokens.borderInteractivePrimaryDefault - : tokens.borderInteractiveSecondaryDefault, - disabled: tokens.borderDisabled, - pressed: widget.isSelected + WidgetStateColor get _borderColor => WidgetStateColor.fromMap({ + WidgetState.disabled: tokens.borderDisabled, + WidgetState.pressed: widget.isSelected ? tokens.borderInteractivePrimaryActive : tokens.borderInteractiveSecondaryActive, - hovered: widget.isSelected + WidgetState.hovered: widget.isSelected ? tokens.borderInteractivePrimaryHover : tokens.borderInteractiveSecondaryHover, - ); + WidgetState.any: widget.isSelected + ? tokens.borderInteractivePrimaryDefault + : tokens.borderInteractiveSecondaryDefault, + }); - InteractiveStateColor get _titleColor => InteractiveStateColor( - defaultColor: tokens.textStaticPrimary, - disabled: tokens.textDisabled, - pressed: tokens.textStaticPrimary, - hovered: tokens.textStaticPrimary, - ); + WidgetStateColor get _titleColor => WidgetStateColor.fromMap({ + WidgetState.disabled: tokens.textDisabled, + WidgetState.any: tokens.textStaticPrimary, + }); - InteractiveStateColor get _descriptionColor => InteractiveStateColor( - defaultColor: tokens.textStaticTertiary, - disabled: tokens.textDisabled, - pressed: tokens.textStaticTertiary, - hovered: tokens.textStaticTertiary, - ); + WidgetStateColor get _descriptionColor => WidgetStateColor.fromMap({ + WidgetState.disabled: tokens.textDisabled, + WidgetState.any: tokens.textStaticTertiary, + }); @override void didUpdateWidget(covariant OptimusSelectionCard oldWidget) { diff --git a/optimus/pubspec.yaml b/optimus/pubspec.yaml index 7d905f2b..3542dedc 100644 --- a/optimus/pubspec.yaml +++ b/optimus/pubspec.yaml @@ -5,7 +5,7 @@ repository: https://github.com/MewsSystems/mews-flutter environment: sdk: ">=3.0.0 <4.0.0" - flutter: ">=3.24.0" + flutter: ">=3.27.0" dependencies: dfunc: ^0.10.0 diff --git a/pubspec.lock b/pubspec.lock index 4c81fec3..30218132 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,34 +13,34 @@ packages: dependency: transitive description: name: args - sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.6.0" async: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.12.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" charcode: dependency: transitive description: name: charcode - sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 + sha256: fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.4.0" cli_launcher: dependency: transitive description: @@ -53,18 +53,18 @@ packages: dependency: transitive description: name: cli_util - sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c url: "https://pub.dev" source: hosted - version: "0.4.0" + version: "0.4.2" collection: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.1" conventional_commit: dependency: transitive description: @@ -93,66 +93,66 @@ packages: dependency: transitive description: name: graphs - sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" http: dependency: transitive description: name: http - sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.2" http_parser: dependency: transitive description: name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.1.2" io: dependency: transitive description: name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" json_annotation: dependency: transitive description: name: json_annotation - sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" url: "https://pub.dev" source: hosted - version: "4.8.1" + version: "4.9.0" matcher: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.17" melos: dependency: "direct dev" description: name: melos - sha256: "3f22f6cc629d72acf3acc8a7f8563384550290fa30790efa328c9cf606aa17d7" + sha256: "96e64bbade5712c3f010137e195bca9f1b351fac34ab1f322af492ae34032067" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.4.0" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.16.0" mustache_template: dependency: transitive description: @@ -165,18 +165,18 @@ packages: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.1" platform: dependency: transitive description: name: platform - sha256: "57c07bf82207aee366dfaa3867b3164e4f03a238a461a11b0e8a3a510d51203d" + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.6" pool: dependency: transitive description: @@ -205,10 +205,10 @@ packages: dependency: transitive description: name: pub_semver - sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" pub_updater: dependency: transitive description: @@ -229,66 +229,66 @@ packages: dependency: transitive description: name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" source_span: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" string_scanner: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.4" typed_data: dependency: transitive description: name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.4.0" uri: dependency: transitive description: @@ -297,21 +297,29 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" + web: + dependency: transitive + description: + name: web + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb + url: "https://pub.dev" + source: hosted + version: "1.1.0" yaml: dependency: transitive description: name: yaml - sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" yaml_edit: dependency: transitive description: name: yaml_edit - sha256: "1579d4a0340a83cf9e4d580ea51a16329c916973bffd5bd4b45e911b25d46bfd" + sha256: fb38626579fb345ad00e674e2af3a5c9b0cc4b9bfb8fd7f7ff322c7c9e62aef5 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.2.2" sdks: - dart: ">=3.0.0 <4.0.0" + dart: ">=3.5.0 <4.0.0"