diff --git a/packages/wyatt_ui_components/lib/src/core/core.dart b/packages/wyatt_ui_components/lib/src/core/core.dart
index d850e320..a18f1e81 100644
--- a/packages/wyatt_ui_components/lib/src/core/core.dart
+++ b/packages/wyatt_ui_components/lib/src/core/core.dart
@@ -18,5 +18,4 @@ export 'enums/control_state.dart';
export 'extensions/build_context_extensions.dart';
export 'extensions/string_extension.dart';
export 'mixins/copy_with_mixin.dart';
-export 'utils/multi_color.dart';
-export 'utils/text_wrapper.dart';
+export 'utils/utils.dart';
diff --git a/packages/wyatt_ui_kit/lib/src/core/helpers/theme_resolver.dart b/packages/wyatt_ui_components/lib/src/core/utils/theme_resolver.dart
similarity index 94%
rename from packages/wyatt_ui_kit/lib/src/core/helpers/theme_resolver.dart
rename to packages/wyatt_ui_components/lib/src/core/utils/theme_resolver.dart
index f54aeaa3..08c04a3b 100644
--- a/packages/wyatt_ui_kit/lib/src/core/helpers/theme_resolver.dart
+++ b/packages/wyatt_ui_components/lib/src/core/utils/theme_resolver.dart
@@ -15,7 +15,6 @@
// along with this program. If not, see .
import 'package:flutter/material.dart';
-import 'package:wyatt_ui_kit/src/core/extensions/theme_extensions.dart';
/// {@template theme_resolver}
/// In charge of theme negotiation and merge.
@@ -72,7 +71,7 @@ abstract class ThemeResolver {
return previousPhaseValue;
}
- T? findExtension(BuildContext context) => context.themeExtension();
+ T? findExtension(BuildContext context) => Theme.of(context).extension();
/// Choose most suitable style for a given context.
S negotiate(BuildContext context, {E? extra}) {
diff --git a/packages/wyatt_ui_components/lib/src/core/utils/utils.dart b/packages/wyatt_ui_components/lib/src/core/utils/utils.dart
new file mode 100644
index 00000000..17821996
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/core/utils/utils.dart
@@ -0,0 +1,19 @@
+// Copyright (C) 2023 WYATT GROUP
+// Please see the AUTHORS file for details.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+export 'multi_color.dart';
+export 'text_wrapper.dart';
+export 'theme_resolver.dart';
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/buttons/button_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/buttons/button_component.dart
index 32b93910..a5c285d5 100644
--- a/packages/wyatt_ui_components/lib/src/domain/entities/buttons/button_component.dart
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/buttons/button_component.dart
@@ -26,6 +26,7 @@ abstract class ButtonComponent extends Component {
this.selectedStyle,
this.invalidStyle,
this.onPressed,
+ this.themeResolver,
super.key,
});
@@ -52,4 +53,7 @@ abstract class ButtonComponent extends Component {
/// Callback on button press
final void Function(ControlState state)? onPressed;
+
+ /// Theme Resolver for this component
+ final ThemeResolver? themeResolver;
}
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/buttons/file_selection_button_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/buttons/file_selection_button_component.dart
index 4d08b13e..b0e5866b 100644
--- a/packages/wyatt_ui_components/lib/src/domain/entities/buttons/file_selection_button_component.dart
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/buttons/file_selection_button_component.dart
@@ -36,6 +36,7 @@ abstract class FileSelectionButtonComponent extends ButtonComponent
super.selectedStyle,
super.invalidStyle,
super.onPressed,
+ super.themeResolver,
super.key,
});
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/buttons/flat_button_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/buttons/flat_button_component.dart
index 97ef3ff4..83420a59 100644
--- a/packages/wyatt_ui_components/lib/src/domain/entities/buttons/flat_button_component.dart
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/buttons/flat_button_component.dart
@@ -34,6 +34,7 @@ abstract class FlatButtonComponent extends ButtonComponent
super.focusedStyle,
super.tappedStyle,
super.onPressed,
+ super.themeResolver,
super.key,
});
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/buttons/simple_icon_button_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/buttons/simple_icon_button_component.dart
index 89b42dbe..b9a3c746 100644
--- a/packages/wyatt_ui_components/lib/src/domain/entities/buttons/simple_icon_button_component.dart
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/buttons/simple_icon_button_component.dart
@@ -31,6 +31,7 @@ abstract class SimpleIconButtonComponent extends ButtonComponent
super.focusedStyle,
super.tappedStyle,
super.onPressed,
+ super.themeResolver,
super.key,
});
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/buttons/symbol_button_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/buttons/symbol_button_component.dart
index a811af66..a09255d0 100644
--- a/packages/wyatt_ui_components/lib/src/domain/entities/buttons/symbol_button_component.dart
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/buttons/symbol_button_component.dart
@@ -34,6 +34,7 @@ abstract class SymbolButtonComponent extends ButtonComponent
super.tappedStyle,
super.selectedStyle,
super.onPressed,
+ super.themeResolver,
super.key,
});
diff --git a/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button.dart b/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button.dart
index d7520b4e..aeebaa43 100644
--- a/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button.dart
@@ -40,7 +40,7 @@ class FileSelectionButton extends FileSelectionButtonComponent
super.invalidStyle,
super.onPressed,
super.mainAxisSize,
- this.themeResolver,
+ super.themeResolver,
super.key,
});
@@ -76,8 +76,10 @@ class FileSelectionButton extends FileSelectionButtonComponent
@override
FileSelectionButtonStyle? get invalidStyle =>
super.invalidStyle as FileSelectionButtonStyle?;
-
- final FileSelectionButtonThemeResolver? themeResolver;
+
+ @override
+ FileSelectionButtonThemeResolver? get themeResolver =>
+ super.themeResolver as FileSelectionButtonThemeResolver?;
@override
Widget build(BuildContext context) => exportBloc(
diff --git a/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button.g.dart b/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button.g.dart
index d4fdf1d7..45b7eca4 100644
--- a/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button.g.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button.g.dart
@@ -45,6 +45,10 @@ class $FileSelectionButtonCWProxyImpl
FileSelectionButton onPressed(void Function(ControlState)? onPressed) =>
this(onPressed: onPressed);
@override
+ FileSelectionButton themeResolver(
+ ThemeResolver? themeResolver) =>
+ this(themeResolver: themeResolver);
+ @override
FileSelectionButton key(Key? key) => this(key: key);
@override
FileSelectionButton call({
@@ -60,6 +64,7 @@ class $FileSelectionButtonCWProxyImpl
ButtonStyle? selectedStyle,
ButtonStyle? invalidStyle,
void Function(ControlState)? onPressed,
+ ThemeResolver? themeResolver,
Key? key,
}) =>
FileSelectionButton(
diff --git a/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button_theme_resolver.dart b/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button_theme_resolver.dart
index 8d326abf..85cccdcf 100644
--- a/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button_theme_resolver.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/buttons/file_selection_button/file_selection_button_theme_resolver.dart
@@ -17,7 +17,6 @@
import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
import 'package:wyatt_ui_kit/src/components/buttons/cubit/button_cubit.dart';
-import 'package:wyatt_ui_kit/src/core/helpers/theme_resolver.dart';
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
class FileSelectionButtonThemeResolver extends ThemeResolver<
diff --git a/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button.dart b/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button.dart
index e5cf5093..123b91c2 100644
--- a/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button.dart
@@ -38,7 +38,7 @@ class FlatButton extends FlatButtonComponent
super.tappedStyle,
super.onPressed,
super.mainAxisSize,
- this.themeResolver,
+ super.themeResolver,
super.key,
});
@@ -62,7 +62,9 @@ class FlatButton extends FlatButtonComponent
@override
FlatButtonStyle? get tappedStyle => super.tappedStyle as FlatButtonStyle?;
- final FlatButtonThemeResolver? themeResolver;
+ @override
+ FlatButtonThemeResolver? get themeResolver =>
+ super.themeResolver as FlatButtonThemeResolver?;
@override
Widget build(BuildContext context) => exportBloc(
diff --git a/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button.g.dart b/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button.g.dart
index cf5fdf0f..2fb990d5 100644
--- a/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button.g.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button.g.dart
@@ -37,6 +37,10 @@ class $FlatButtonCWProxyImpl implements $FlatButtonComponentCWProxy {
FlatButton onPressed(void Function(ControlState)? onPressed) =>
this(onPressed: onPressed);
@override
+ FlatButton themeResolver(
+ ThemeResolver? themeResolver) =>
+ this(themeResolver: themeResolver);
+ @override
FlatButton key(Key? key) => this(key: key);
@override
FlatButton call({
@@ -50,6 +54,7 @@ class $FlatButtonCWProxyImpl implements $FlatButtonComponentCWProxy {
ButtonStyle? focusedStyle,
ButtonStyle? tappedStyle,
void Function(ControlState)? onPressed,
+ ThemeResolver? themeResolver,
Key? key,
}) =>
FlatButton(
diff --git a/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button_theme_resolver.dart b/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button_theme_resolver.dart
index 3e125b21..c48c6b8e 100644
--- a/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button_theme_resolver.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/buttons/flat_button/flat_button_theme_resolver.dart
@@ -16,7 +16,6 @@
import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
-import 'package:wyatt_ui_kit/src/core/helpers/theme_resolver.dart';
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
class FlatButtonThemeResolver extends ThemeResolver
+ @override
FlatButtonStyle computeDefaultValue(
BuildContext context, {
ControlState? extra,
diff --git a/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button.dart b/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button.dart
index 6913ab37..0322265a 100644
--- a/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button.dart
@@ -35,7 +35,7 @@ class SimpleIconButton extends SimpleIconButtonComponent
super.focusedStyle,
super.tappedStyle,
super.onPressed,
- this.themeResolver,
+ super.themeResolver,
super.key,
});
@@ -64,7 +64,9 @@ class SimpleIconButton extends SimpleIconButtonComponent
SimpleIconButtonStyle? get tappedStyle =>
super.tappedStyle as SimpleIconButtonStyle?;
- final SimpleIconButtonThemeResolver? themeResolver;
+ @override
+ SimpleIconButtonThemeResolver? get themeResolver =>
+ super.themeResolver as SimpleIconButtonThemeResolver?;
@override
Widget build(BuildContext context) => exportBloc(
diff --git a/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button.g.dart b/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button.g.dart
index 31464a10..79bfba6a 100644
--- a/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button.g.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button.g.dart
@@ -31,6 +31,10 @@ class $SimpleIconButtonCWProxyImpl
SimpleIconButton onPressed(void Function(ControlState)? onPressed) =>
this(onPressed: onPressed);
@override
+ SimpleIconButton themeResolver(
+ ThemeResolver? themeResolver) =>
+ this(themeResolver: themeResolver);
+ @override
SimpleIconButton key(Key? key) => this(key: key);
@override
SimpleIconButton call({
@@ -41,6 +45,7 @@ class $SimpleIconButtonCWProxyImpl
ButtonStyle? focusedStyle,
ButtonStyle? tappedStyle,
void Function(ControlState)? onPressed,
+ ThemeResolver? themeResolver,
Key? key,
}) =>
SimpleIconButton(
diff --git a/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button_theme_resolver.dart b/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button_theme_resolver.dart
index a6dc37ba..5062d231 100644
--- a/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button_theme_resolver.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/buttons/simple_icon_button/simple_icon_button_theme_resolver.dart
@@ -16,7 +16,6 @@
import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
-import 'package:wyatt_ui_kit/src/core/helpers/theme_resolver.dart';
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
class SimpleIconButtonThemeResolver extends ThemeResolver
super.selectedStyle as SymbolButtonStyle?;
- final SymbolButtonThemeResolver? themeResolver;
+ @override
+ SymbolButtonThemeResolver? get themeResolver =>
+ super.themeResolver as SymbolButtonThemeResolver?;
@override
Widget build(BuildContext context) => exportBloc(
diff --git a/packages/wyatt_ui_kit/lib/src/components/buttons/symbol_button/symbol_button.g.dart b/packages/wyatt_ui_kit/lib/src/components/buttons/symbol_button/symbol_button.g.dart
index 2f0fd363..c7e06ab2 100644
--- a/packages/wyatt_ui_kit/lib/src/components/buttons/symbol_button/symbol_button.g.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/buttons/symbol_button/symbol_button.g.dart
@@ -38,6 +38,10 @@ class $SymbolButtonCWProxyImpl implements $SymbolButtonComponentCWProxy {
SymbolButton onPressed(void Function(ControlState)? onPressed) =>
this(onPressed: onPressed);
@override
+ SymbolButton themeResolver(
+ ThemeResolver? themeResolver) =>
+ this(themeResolver: themeResolver);
+ @override
SymbolButton key(Key? key) => this(key: key);
@override
SymbolButton call({
@@ -51,6 +55,7 @@ class $SymbolButtonCWProxyImpl implements $SymbolButtonComponentCWProxy {
ButtonStyle? tappedStyle,
ButtonStyle? selectedStyle,
void Function(ControlState)? onPressed,
+ ThemeResolver? themeResolver,
Key? key,
}) =>
SymbolButton(
diff --git a/packages/wyatt_ui_kit/lib/src/components/buttons/symbol_button/symbol_button_theme_resolver.dart b/packages/wyatt_ui_kit/lib/src/components/buttons/symbol_button/symbol_button_theme_resolver.dart
index ed446330..c0f21f63 100644
--- a/packages/wyatt_ui_kit/lib/src/components/buttons/symbol_button/symbol_button_theme_resolver.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/buttons/symbol_button/symbol_button_theme_resolver.dart
@@ -17,7 +17,6 @@
import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
import 'package:wyatt_ui_kit/src/components/buttons/cubit/button_cubit.dart';
-import 'package:wyatt_ui_kit/src/core/helpers/theme_resolver.dart';
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
class SymbolButtonThemeResolver extends ThemeResolver
- SymbolButtonStyle(
- label: context.textTheme.labelLarge,
- dimension: context.buttonTheme.height,
- radius: (context.buttonTheme.shape is RoundedRectangleBorder)
- ? (context.buttonTheme.shape as RoundedRectangleBorder).borderRadius
- : null,
- padding: context.buttonTheme.padding,
- foregroundColors: MultiColor.single(context.colorScheme.onPrimary),
- backgroundColors: MultiColor.single(context.colorScheme.primary),
- );
+ }) {
+ MultiColor backgroundColor = MultiColor.single(context.colorScheme.primary);
+ MultiColor foregroundColor =
+ MultiColor.single(context.colorScheme.onPrimary);
+
+ switch (extra?.state) {
+ case ControlState.disabled:
+ backgroundColor =
+ MultiColor.single(context.colorScheme.onSurface.withOpacity(0.12));
+ foregroundColor =
+ MultiColor.single(context.colorScheme.onSurface.withOpacity(0.38));
+ break;
+ case ControlState.hovered:
+ backgroundColor =
+ MultiColor.single(context.colorScheme.primary.withOpacity(0.92));
+ break;
+ case ControlState.tapped:
+ backgroundColor =
+ MultiColor.single(context.colorScheme.primary.withOpacity(0.92));
+ break;
+ case null:
+ case ControlState.normal:
+ case ControlState.focused:
+ break;
+ }
+
+ return SymbolButtonStyle(
+ label: context.textTheme.labelLarge,
+ dimension: context.buttonTheme.height,
+ radius: (context.buttonTheme.shape is RoundedRectangleBorder)
+ ? (context.buttonTheme.shape as RoundedRectangleBorder).borderRadius
+ : null,
+ padding: context.buttonTheme.padding,
+ foregroundColors: foregroundColor,
+ backgroundColors: backgroundColor,
+ );
+ }
@override
final SymbolButtonStyle? Function(