From 52ed9b74d9f4d4aa38ce9fe8fd39d8f8218025d1 Mon Sep 17 00:00:00 2001 From: Harry Sild <46851868+Kypsis@users.noreply.github.com> Date: Thu, 2 Mar 2023 15:56:12 +0200 Subject: [PATCH] fix: [MDS-410] Button fullWidth property bugs out in some conditions (#66) --- lib/moon_design.dart | 4 +- lib/src/widgets/buttons/button.dart | 93 ++++++++++--------- .../{loader => loaders}/circular_loader.dart | 0 .../{loader => loaders}/linear_loader.dart | 0 4 files changed, 49 insertions(+), 48 deletions(-) rename lib/src/widgets/{loader => loaders}/circular_loader.dart (100%) rename lib/src/widgets/{loader => loaders}/linear_loader.dart (100%) diff --git a/lib/moon_design.dart b/lib/moon_design.dart index fdbbaf23..b4e3b462 100644 --- a/lib/moon_design.dart +++ b/lib/moon_design.dart @@ -47,8 +47,8 @@ export 'package:moon_design/src/widgets/common/progress_indicators/circular_prog export 'package:moon_design/src/widgets/common/progress_indicators/linear_progress_indicator.dart'; export 'package:moon_design/src/widgets/effects/focus_effect.dart'; export 'package:moon_design/src/widgets/effects/pulse_effect.dart'; -export 'package:moon_design/src/widgets/loader/circular_loader.dart'; -export 'package:moon_design/src/widgets/loader/linear_loader.dart'; +export 'package:moon_design/src/widgets/loaders/circular_loader.dart'; +export 'package:moon_design/src/widgets/loaders/linear_loader.dart'; export 'package:moon_design/src/widgets/progress/circular_progress.dart'; export 'package:moon_design/src/widgets/progress/linear_progress.dart'; export 'package:moon_design/src/widgets/tag/tag.dart'; diff --git a/lib/src/widgets/buttons/button.dart b/lib/src/widgets/buttons/button.dart index c203f01b..e8a0c5d9 100644 --- a/lib/src/widgets/buttons/button.dart +++ b/lib/src/widgets/buttons/button.dart @@ -404,7 +404,6 @@ class MoonButton extends StatelessWidget { curve: effectiveHoverEffectCurve, width: width, height: effectiveHeight, - padding: correctedPadding, constraints: BoxConstraints(minWidth: effectiveHeight), decoration: ShapeDecoration( color: canAnimateHover ? hoverColor : backgroundColor, @@ -434,59 +433,61 @@ class MoonButton extends StatelessWidget { ), ), ), - child: AnimatedIconTheme( - duration: effectiveHoverEffectDuration, - curve: effectiveHoverEffectCurve, - color: effectiveTextColor, - size: effectiveMoonButtonSize.iconSizeValue, - child: AnimatedDefaultTextStyle( - style: TextStyle(color: effectiveTextColor, fontSize: effectiveMoonButtonSize.textStyle.fontSize), + child: Padding( + padding: isFullWidth ? EdgeInsets.zero : correctedPadding, + child: AnimatedIconTheme( duration: effectiveHoverEffectDuration, curve: effectiveHoverEffectCurve, - child: isFullWidth - ? Stack( - fit: StackFit.expand, - alignment: Alignment.center, - children: [ - if (leftIcon != null) - Align( - alignment: Alignment.centerLeft, - child: Padding( + color: effectiveTextColor, + size: effectiveMoonButtonSize.iconSizeValue, + child: AnimatedDefaultTextStyle( + style: TextStyle(color: effectiveTextColor, fontSize: effectiveMoonButtonSize.textStyle.fontSize), + duration: effectiveHoverEffectDuration, + curve: effectiveHoverEffectCurve, + child: isFullWidth + ? Stack( + fit: StackFit.expand, + children: [ + if (leftIcon != null) + Container( + margin: EdgeInsets.symmetric(horizontal: effectiveGap), + alignment: Directionality.of(context) == TextDirection.ltr + ? Alignment.centerLeft + : Alignment.centerRight, + child: leftIcon, + ), + if (label != null) + Align( + child: label, + ), + if (rightIcon != null) + Container( + margin: EdgeInsets.symmetric(horizontal: effectiveGap), + alignment: Directionality.of(context) == TextDirection.ltr + ? Alignment.centerRight + : Alignment.centerLeft, + child: rightIcon, + ), + ], + ) + : Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (leftIcon != null) + Padding( padding: EdgeInsets.symmetric(horizontal: effectiveGap), child: leftIcon, ), - ), - if (label != null) - Align( - child: label, - ), - if (rightIcon != null) - Align( - alignment: Alignment.centerRight, - child: Padding( + if (label != null) label!, + if (rightIcon != null) + Padding( padding: EdgeInsets.symmetric(horizontal: effectiveGap), child: rightIcon, ), - ), - ], - ) - : Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - if (leftIcon != null) - Padding( - padding: EdgeInsets.symmetric(horizontal: effectiveGap), - child: leftIcon, - ), - if (label != null) label!, - if (rightIcon != null) - Padding( - padding: EdgeInsets.symmetric(horizontal: effectiveGap), - child: rightIcon, - ), - ], - ), + ], + ), + ), ), ), ); diff --git a/lib/src/widgets/loader/circular_loader.dart b/lib/src/widgets/loaders/circular_loader.dart similarity index 100% rename from lib/src/widgets/loader/circular_loader.dart rename to lib/src/widgets/loaders/circular_loader.dart diff --git a/lib/src/widgets/loader/linear_loader.dart b/lib/src/widgets/loaders/linear_loader.dart similarity index 100% rename from lib/src/widgets/loader/linear_loader.dart rename to lib/src/widgets/loaders/linear_loader.dart