diff --git a/example/lib/src/storybook/stories/authcode.dart b/example/lib/src/storybook/stories/authcode.dart index 424cfa14..ba2a9f06 100644 --- a/example/lib/src/storybook/stories/authcode.dart +++ b/example/lib/src/storybook/stories/authcode.dart @@ -6,7 +6,8 @@ import 'package:flutter/material.dart'; import 'package:moon_design/moon_design.dart'; import 'package:storybook_flutter/storybook_flutter.dart'; -final StreamController errorController = StreamController(); +// Broadcast is used as a hack to overcome Storybook stale state +final StreamController errorStreamController = StreamController.broadcast(); class AuthCodeStory extends Story { AuthCodeStory() @@ -156,7 +157,7 @@ class AuthCodeStory extends Story { gap: gapKnob.toDouble(), authFieldShape: shapeKnob, obscureText: obscuringKnob, - obscuringCharacter: '*', + obscuringCharacter: '﹡', peekWhenObscuring: peekWhenObscuringKnob, validator: (String? value) => null, errorBuilder: (BuildContext context, String? errorText) => const SizedBox(), @@ -178,7 +179,7 @@ class AuthCodeStory extends Story { gap: gapKnob.toDouble(), authFieldShape: shapeKnob, obscureText: obscuringKnob, - obscuringCharacter: '*', + obscuringCharacter: '﹡', peekWhenObscuring: peekWhenObscuringKnob, validator: (String? value) => null, errorBuilder: (BuildContext context, String? errorText) => const SizedBox(), @@ -193,7 +194,7 @@ class AuthCodeStory extends Story { authInputFieldCount: 4, mainAxisAlignment: mainAxisAlignmentKnob, borderRadius: BorderRadius.circular(borderRadiusKnob.toDouble()), - errorStreamController: errorController, + errorStreamController: errorStreamController, selectedFillColor: selectedFillColor, activeFillColor: activeFillColor, inactiveFillColor: inactiveFillColor, @@ -203,11 +204,11 @@ class AuthCodeStory extends Story { gap: gapKnob.toDouble(), authFieldShape: shapeKnob, obscureText: obscuringKnob, - obscuringCharacter: '*', + obscuringCharacter: '﹡', peekWhenObscuring: peekWhenObscuringKnob, onCompleted: (pin) { if (pin != '9921') { - errorController.add( + errorStreamController.add( errorAnimationKnob ? ErrorAnimationType.shake : ErrorAnimationType.noAnimation, ); } diff --git a/example/lib/src/storybook/storybook.dart b/example/lib/src/storybook/storybook.dart index 05b1c15b..9f89d842 100644 --- a/example/lib/src/storybook/storybook.dart +++ b/example/lib/src/storybook/storybook.dart @@ -93,6 +93,12 @@ class StorybookPage extends StatelessWidget { TooltipStory(), ], ), + + // hack for preloading the unicode character + const SizedBox( + height: 0, + child: Text('﹡'), + ), const Align( alignment: Alignment.bottomCenter, child: MoonVersionWidget(), diff --git a/lib/src/theme/accordion/accordion_item_size_properties.dart b/lib/src/theme/accordion/accordion_item_size_properties.dart index 35612a85..4809d30f 100644 --- a/lib/src/theme/accordion/accordion_item_size_properties.dart +++ b/lib/src/theme/accordion/accordion_item_size_properties.dart @@ -44,7 +44,7 @@ class MoonAccordionItemSizeProperties extends ThemeExtension("headerPadding", headerPadding)) + ..add(DiagnosticsProperty("headerPadding", headerPadding)) ..add(DiagnosticsProperty("textStyle", textStyle)); } } diff --git a/lib/src/theme/alert/alert_properties.dart b/lib/src/theme/alert/alert_properties.dart index 37f32019..088ab497 100644 --- a/lib/src/theme/alert/alert_properties.dart +++ b/lib/src/theme/alert/alert_properties.dart @@ -39,7 +39,7 @@ class MoonAlertProperties extends ThemeExtension with Diagn final Curve transitionCurve; /// Alert padding. - final EdgeInsets padding; + final EdgeInsetsGeometry padding; /// Alert body text style. final TextStyle bodyTextStyle; @@ -67,7 +67,7 @@ class MoonAlertProperties extends ThemeExtension with Diagn double? verticalGap, Duration? transitionDuration, Curve? transitionCurve, - EdgeInsets? padding, + EdgeInsetsGeometry? padding, TextStyle? bodyTextStyle, TextStyle? titleTextStyle, }) { @@ -95,7 +95,7 @@ class MoonAlertProperties extends ThemeExtension with Diagn verticalGap: lerpDouble(verticalGap, other.verticalGap, t)!, transitionDuration: lerpDuration(transitionDuration, other.transitionDuration, t), transitionCurve: other.transitionCurve, - padding: EdgeInsets.lerp(padding, other.padding, t)!, + padding: EdgeInsetsGeometry.lerp(padding, other.padding, t)!, bodyTextStyle: TextStyle.lerp(bodyTextStyle, other.bodyTextStyle, t)!, titleTextStyle: TextStyle.lerp(titleTextStyle, other.titleTextStyle, t)!, ); @@ -112,7 +112,7 @@ class MoonAlertProperties extends ThemeExtension with Diagn ..add(DiagnosticsProperty("verticalGap", verticalGap)) ..add(DiagnosticsProperty("transitionDuration", transitionDuration)) ..add(DiagnosticsProperty("transitionCurve", transitionCurve)) - ..add(DiagnosticsProperty("padding", padding)) + ..add(DiagnosticsProperty("padding", padding)) ..add(DiagnosticsProperty("bodyTextStyle", bodyTextStyle)) ..add(DiagnosticsProperty("titleTextStyle", titleTextStyle)); } diff --git a/lib/src/theme/button/button_size_properties.dart b/lib/src/theme/button/button_size_properties.dart index 969d3196..bc54bd57 100644 --- a/lib/src/theme/button/button_size_properties.dart +++ b/lib/src/theme/button/button_size_properties.dart @@ -64,7 +64,7 @@ class MoonButtonSizeProperties extends ThemeExtension final double iconSizeValue; /// Padding around button children. - final EdgeInsets padding; + final EdgeInsetsGeometry padding; /// Button border radius. final BorderRadius borderRadius; @@ -86,7 +86,7 @@ class MoonButtonSizeProperties extends ThemeExtension double? height, double? gap, double? iconSizeValue, - EdgeInsets? padding, + EdgeInsetsGeometry? padding, BorderRadius? borderRadius, TextStyle? textStyle, }) { @@ -108,7 +108,7 @@ class MoonButtonSizeProperties extends ThemeExtension height: lerpDouble(height, other.height, t)!, gap: lerpDouble(gap, other.gap, t)!, iconSizeValue: lerpDouble(iconSizeValue, other.iconSizeValue, t)!, - padding: EdgeInsets.lerp(padding, other.padding, t)!, + padding: EdgeInsetsGeometry.lerp(padding, other.padding, t)!, borderRadius: BorderRadius.lerp(borderRadius, other.borderRadius, t)!, textStyle: TextStyle.lerp(textStyle, other.textStyle, t)!, ); @@ -122,7 +122,7 @@ class MoonButtonSizeProperties extends ThemeExtension ..add(DoubleProperty("height", height)) ..add(DoubleProperty("gap", gap)) ..add(DoubleProperty("iconSizeValue", iconSizeValue)) - ..add(DiagnosticsProperty("padding", padding)) + ..add(DiagnosticsProperty("padding", padding)) ..add(DiagnosticsProperty("borderRadius", borderRadius)) ..add(DiagnosticsProperty("textStyle", textStyle)); } diff --git a/lib/src/theme/chip/chip_size_properties.dart b/lib/src/theme/chip/chip_size_properties.dart index b5649348..e6efec9c 100644 --- a/lib/src/theme/chip/chip_size_properties.dart +++ b/lib/src/theme/chip/chip_size_properties.dart @@ -37,7 +37,7 @@ class MoonChipSizeProperties extends ThemeExtension with final double iconSizeValue; /// Padding around chip children. - final EdgeInsets padding; + final EdgeInsetsGeometry padding; /// Chip border radius. final BorderRadius borderRadius; @@ -59,7 +59,7 @@ class MoonChipSizeProperties extends ThemeExtension with double? height, double? gap, double? iconSizeValue, - EdgeInsets? padding, + EdgeInsetsGeometry? padding, BorderRadius? borderRadius, TextStyle? textStyle, }) { @@ -81,7 +81,7 @@ class MoonChipSizeProperties extends ThemeExtension with height: lerpDouble(height, other.height, t)!, gap: lerpDouble(gap, other.gap, t)!, iconSizeValue: lerpDouble(iconSizeValue, other.iconSizeValue, t)!, - padding: EdgeInsets.lerp(padding, other.padding, t)!, + padding: EdgeInsetsGeometry.lerp(padding, other.padding, t)!, borderRadius: BorderRadius.lerp(borderRadius, other.borderRadius, t)!, textStyle: TextStyle.lerp(textStyle, other.textStyle, t)!, ); @@ -95,7 +95,7 @@ class MoonChipSizeProperties extends ThemeExtension with ..add(DoubleProperty("height", height)) ..add(DoubleProperty("gap", gap)) ..add(DoubleProperty("iconSizeValue", iconSizeValue)) - ..add(DiagnosticsProperty("padding", padding)) + ..add(DiagnosticsProperty("padding", padding)) ..add(DiagnosticsProperty("borderRadius", borderRadius)) ..add(DiagnosticsProperty("textStyle", textStyle)); } diff --git a/lib/src/theme/popover/popover_properties.dart b/lib/src/theme/popover/popover_properties.dart index fce71312..f3415f28 100644 --- a/lib/src/theme/popover/popover_properties.dart +++ b/lib/src/theme/popover/popover_properties.dart @@ -20,7 +20,7 @@ class MoonPopoverProperties extends ThemeExtension with D final double distanceToTarget; /// Padding around popover content. - final EdgeInsets contentPadding; + final EdgeInsetsGeometry contentPadding; /// Popover border radius. final BorderRadius borderRadius; @@ -42,7 +42,7 @@ class MoonPopoverProperties extends ThemeExtension with D @override MoonPopoverProperties copyWith({ double? distanceToTarget, - EdgeInsets? contentPadding, + EdgeInsetsGeometry? contentPadding, BorderRadius? borderRadius, Duration? transitionDuration, Curve? transitionCurve, @@ -62,7 +62,7 @@ class MoonPopoverProperties extends ThemeExtension with D return MoonPopoverProperties( distanceToTarget: lerpDouble(distanceToTarget, other.distanceToTarget, t)!, - contentPadding: EdgeInsets.lerp(contentPadding, other.contentPadding, t)!, + contentPadding: EdgeInsetsGeometry.lerp(contentPadding, other.contentPadding, t)!, borderRadius: BorderRadius.lerp(borderRadius, other.borderRadius, t)!, transitionDuration: lerpDuration(transitionDuration, other.transitionDuration, t), transitionCurve: other.transitionCurve, @@ -75,7 +75,7 @@ class MoonPopoverProperties extends ThemeExtension with D properties ..add(DiagnosticsProperty("type", "MoonPopoverProperties")) ..add(DoubleProperty("distanceToTarget", distanceToTarget)) - ..add(DiagnosticsProperty("contentPadding", contentPadding)) + ..add(DiagnosticsProperty("contentPadding", contentPadding)) ..add(DiagnosticsProperty("borderRadius", borderRadius)) ..add(DiagnosticsProperty("transitionDuration", transitionDuration)) ..add(DiagnosticsProperty("transitionCurve", transitionCurve)); diff --git a/lib/src/theme/switch/switch_size_properties.dart b/lib/src/theme/switch/switch_size_properties.dart index e7b681c5..bfb03bd4 100644 --- a/lib/src/theme/switch/switch_size_properties.dart +++ b/lib/src/theme/switch/switch_size_properties.dart @@ -38,7 +38,7 @@ class MoonSwitchSizeProperties extends ThemeExtension final double thumbSizeValue; /// Switch track padding. - final EdgeInsets padding; + final EdgeInsetsGeometry padding; const MoonSwitchSizeProperties({ required this.width, @@ -52,7 +52,7 @@ class MoonSwitchSizeProperties extends ThemeExtension double? width, double? height, double? thumbSizeValue, - EdgeInsets? padding, + EdgeInsetsGeometry? padding, }) { return MoonSwitchSizeProperties( width: width ?? this.width, @@ -70,7 +70,7 @@ class MoonSwitchSizeProperties extends ThemeExtension width: lerpDouble(width, other.width, t)!, height: lerpDouble(height, other.height, t)!, thumbSizeValue: lerpDouble(thumbSizeValue, other.thumbSizeValue, t)!, - padding: EdgeInsets.lerp(padding, other.padding, t)!, + padding: EdgeInsetsGeometry.lerp(padding, other.padding, t)!, ); } @@ -82,6 +82,6 @@ class MoonSwitchSizeProperties extends ThemeExtension ..add(DoubleProperty("width", width)) ..add(DoubleProperty("height", height)) ..add(DoubleProperty("thumbSizeValue", thumbSizeValue)) - ..add(DiagnosticsProperty("padding", padding)); + ..add(DiagnosticsProperty("padding", padding)); } } diff --git a/lib/src/theme/tag/tag_size_properties.dart b/lib/src/theme/tag/tag_size_properties.dart index 61a4d9b7..b3113942 100644 --- a/lib/src/theme/tag/tag_size_properties.dart +++ b/lib/src/theme/tag/tag_size_properties.dart @@ -39,7 +39,7 @@ class MoonTagSizeProperties extends ThemeExtension with D final double iconSizeValue; /// Padding around tag children. - final EdgeInsets padding; + final EdgeInsetsGeometry padding; /// Tag border radius. final BorderRadius borderRadius; @@ -65,7 +65,7 @@ class MoonTagSizeProperties extends ThemeExtension with D double? height, double? gap, double? iconSizeValue, - EdgeInsets? padding, + EdgeInsetsGeometry? padding, BorderRadius? borderRadius, TextStyle? textStyle, TextStyle? upperCaseTextStyle, @@ -89,7 +89,7 @@ class MoonTagSizeProperties extends ThemeExtension with D height: lerpDouble(height, other.height, t)!, gap: lerpDouble(gap, other.gap, t)!, iconSizeValue: lerpDouble(iconSizeValue, other.iconSizeValue, t)!, - padding: EdgeInsets.lerp(padding, other.padding, t)!, + padding: EdgeInsetsGeometry.lerp(padding, other.padding, t)!, borderRadius: BorderRadius.lerp(borderRadius, other.borderRadius, t)!, textStyle: TextStyle.lerp(textStyle, other.textStyle, t)!, upperCaseTextStyle: TextStyle.lerp(upperCaseTextStyle, other.upperCaseTextStyle, t)!, @@ -104,7 +104,7 @@ class MoonTagSizeProperties extends ThemeExtension with D ..add(DoubleProperty("height", height)) ..add(DoubleProperty("gap", gap)) ..add(DoubleProperty("iconSizeValue", iconSizeValue)) - ..add(DiagnosticsProperty("padding", padding)) + ..add(DiagnosticsProperty("padding", padding)) ..add(DiagnosticsProperty("borderRadius", borderRadius)) ..add(DiagnosticsProperty("textStyle", textStyle)) ..add(DiagnosticsProperty("upperCaseTextStyle", upperCaseTextStyle)); diff --git a/lib/src/theme/toast/toast_properties.dart b/lib/src/theme/toast/toast_properties.dart index 69e567a7..9cdd2a85 100644 --- a/lib/src/theme/toast/toast_properties.dart +++ b/lib/src/theme/toast/toast_properties.dart @@ -22,7 +22,7 @@ class MoonToastProperties extends ThemeExtension with Diagn final BorderRadius borderRadius; /// Padding around toast content. - final EdgeInsets contentPadding; + final EdgeInsetsGeometry contentPadding; /// Space between toast children. final double gap; @@ -48,7 +48,7 @@ class MoonToastProperties extends ThemeExtension with Diagn @override MoonToastProperties copyWith({ BorderRadius? borderRadius, - EdgeInsets? contentPadding, + EdgeInsetsGeometry? contentPadding, double? gap, Duration? displayDuration, Duration? transitionDuration, @@ -70,7 +70,7 @@ class MoonToastProperties extends ThemeExtension with Diagn return MoonToastProperties( borderRadius: BorderRadius.lerp(borderRadius, other.borderRadius, t)!, - contentPadding: EdgeInsets.lerp(contentPadding, other.contentPadding, t)!, + contentPadding: EdgeInsetsGeometry.lerp(contentPadding, other.contentPadding, t)!, gap: lerpDouble(gap, other.gap, t)!, displayDuration: lerpDuration(displayDuration, other.displayDuration, t), transitionDuration: lerpDuration(transitionDuration, other.transitionDuration, t), @@ -84,7 +84,7 @@ class MoonToastProperties extends ThemeExtension with Diagn properties ..add(DiagnosticsProperty("type", "MoonToastProperties")) ..add(DiagnosticsProperty("borderRadius", borderRadius)) - ..add(DiagnosticsProperty("contentPadding", contentPadding)) + ..add(DiagnosticsProperty("contentPadding", contentPadding)) ..add(DoubleProperty("gap", gap)) ..add(DiagnosticsProperty("displayDuration", displayDuration)) ..add(DiagnosticsProperty("transitionDuration", transitionDuration)) diff --git a/lib/src/theme/tooltip/tooltip_properties.dart b/lib/src/theme/tooltip/tooltip_properties.dart index a719bb8c..c0dc465b 100644 --- a/lib/src/theme/tooltip/tooltip_properties.dart +++ b/lib/src/theme/tooltip/tooltip_properties.dart @@ -30,7 +30,7 @@ class MoonTooltipProperties extends ThemeExtension with D final double arrowTipDistance; /// Padding around tooltip content. - final EdgeInsets contentPadding; + final EdgeInsetsGeometry contentPadding; /// Tooltip border radius. final BorderRadius borderRadius; @@ -60,7 +60,7 @@ class MoonTooltipProperties extends ThemeExtension with D double? arrowBaseWidth, double? arrowLength, double? arrowTipDistance, - EdgeInsets? contentPadding, + EdgeInsetsGeometry? contentPadding, BorderRadius? borderRadius, Duration? transitionDuration, Curve? transitionCurve, @@ -86,7 +86,7 @@ class MoonTooltipProperties extends ThemeExtension with D arrowBaseWidth: lerpDouble(arrowBaseWidth, other.arrowBaseWidth, t)!, arrowLength: lerpDouble(arrowLength, other.arrowLength, t)!, arrowTipDistance: lerpDouble(arrowTipDistance, other.arrowTipDistance, t)!, - contentPadding: EdgeInsets.lerp(contentPadding, other.contentPadding, t)!, + contentPadding: EdgeInsetsGeometry.lerp(contentPadding, other.contentPadding, t)!, borderRadius: BorderRadius.lerp(borderRadius, other.borderRadius, t)!, transitionDuration: lerpDuration(transitionDuration, other.transitionDuration, t), transitionCurve: other.transitionCurve, @@ -102,7 +102,7 @@ class MoonTooltipProperties extends ThemeExtension with D ..add(DoubleProperty("arrowBaseWidth", arrowBaseWidth)) ..add(DoubleProperty("arrowLength", arrowLength)) ..add(DoubleProperty("arrowTipDistance", arrowTipDistance)) - ..add(DiagnosticsProperty("contentPadding", contentPadding)) + ..add(DiagnosticsProperty("contentPadding", contentPadding)) ..add(DiagnosticsProperty("borderRadius", borderRadius)) ..add(DiagnosticsProperty("transitionDuration", transitionDuration)) ..add(DiagnosticsProperty("transitionCurve", transitionCurve)) diff --git a/lib/src/widgets/accordion/accordion_item.dart b/lib/src/widgets/accordion/accordion_item.dart index f634b3c9..aefa886a 100644 --- a/lib/src/widgets/accordion/accordion_item.dart +++ b/lib/src/widgets/accordion/accordion_item.dart @@ -83,7 +83,7 @@ class MoonAccordionItem extends StatefulWidget { final double? headerHeight; /// Specifies padding for the accordion header. - final EdgeInsets? headerPadding; + final EdgeInsetsGeometry? headerPadding; /// Specifies padding for [children]. final EdgeInsetsGeometry? childrenPadding; @@ -102,7 +102,7 @@ class MoonAccordionItem extends StatefulWidget { /// To align each child within [children], see [expandedCrossAxisAlignment]. /// /// The width of the column is the width of the widest child widget in [children]. - final Alignment? expandedAlignment; + final AlignmentGeometry? expandedAlignment; /// Specifies the alignment of each child within [children] when the accordion is expanded. /// @@ -386,7 +386,10 @@ class _MoonAccordionItemState extends State> with Single _getMoonAccordionItemSize(context, widget.accordionSize); final double effectiveHeaderHeight = widget.headerHeight ?? effectiveMoonAccordionSize.headerHeight; - final EdgeInsets effectiveHeaderPadding = widget.headerPadding ?? effectiveMoonAccordionSize.headerPadding; + + final EdgeInsetsGeometry effectiveHeaderPadding = widget.headerPadding ?? effectiveMoonAccordionSize.headerPadding; + + final EdgeInsets resolvedDirectionalHeaderPadding = effectiveHeaderPadding.resolve(Directionality.of(context)); final List effectiveShadows = widget.shadows ?? context.moonTheme?.accordionTheme.itemShadows.shadows ?? MoonShadows.light.sm; @@ -485,7 +488,7 @@ class _MoonAccordionItemState extends State> with Single children: [ AnimatedContainer( height: effectiveHeaderHeight, - padding: effectiveHeaderPadding, + padding: resolvedDirectionalHeaderPadding, duration: effectiveHoverEffectDuration, curve: effectiveHoverEffectCurve, decoration: widget.hasContentOutside @@ -503,7 +506,7 @@ class _MoonAccordionItemState extends State> with Single children: [ if (widget.leading != null) Padding( - padding: EdgeInsetsDirectional.only(end: effectiveHeaderPadding.left), + padding: EdgeInsetsDirectional.only(end: resolvedDirectionalHeaderPadding.left), child: widget.leading, ), AnimatedDefaultTextStyle( diff --git a/lib/src/widgets/alert/alert.dart b/lib/src/widgets/alert/alert.dart index c4435dcd..fdc986d0 100644 --- a/lib/src/widgets/alert/alert.dart +++ b/lib/src/widgets/alert/alert.dart @@ -53,7 +53,7 @@ class MoonAlert extends StatefulWidget { final Curve? transitionCurve; /// The padding of the alert. - final EdgeInsets? padding; + final EdgeInsetsGeometry? padding; /// The semantic label for the alert. final String? semanticLabel; @@ -190,7 +190,7 @@ class _MoonAlertState extends State with SingleTickerProviderStateMix @override Widget build(BuildContext context) { - final EdgeInsets effectivePadding = + final EdgeInsetsGeometry effectivePadding = widget.padding ?? context.moonTheme?.alertTheme.properties.padding ?? EdgeInsets.all(MoonSizes.sizes.x2s); final double effectiveHorizontalGap = diff --git a/lib/src/widgets/authcode/authcode.dart b/lib/src/widgets/authcode/authcode.dart index 6028e998..c5155603 100644 --- a/lib/src/widgets/authcode/authcode.dart +++ b/lib/src/widgets/authcode/authcode.dart @@ -199,6 +199,7 @@ class MoonAuthCode extends StatefulWidget { /// Overrides the [obscuringCharacter]. final Widget? obscuringWidget; + /// MDS authcode widget. const MoonAuthCode({ super.key, this.authFieldShape = AuthFieldShape.box, @@ -284,11 +285,11 @@ class _MoonAuthCodeState extends State with TickerProviderStateMix late TextStyle _effectiveTextStyle; late TextStyle _effectiveErrorTextStyle; - late StreamSubscription _errorAnimationSubscription; late TextEditingController _textEditingController; late AnimationController _cursorController; late Animation _cursorAnimation; + StreamSubscription? _errorAnimationSubscription; AnimationController? _errorAnimationController; Animation? _errorOffsetAnimation; Duration? _peekDuration; @@ -387,7 +388,7 @@ class _MoonAuthCodeState extends State with TickerProviderStateMix } _setState(() => _isInErrorMode = true); - if(widget.useHapticFeedback) HapticFeedback.vibrate(); + if (widget.useHapticFeedback) HapticFeedback.vibrate(); }); } }); @@ -528,7 +529,7 @@ class _MoonAuthCodeState extends State with TickerProviderStateMix _errorAnimationController!.dispose(); _cursorController.dispose(); _focusNode.dispose(); - _errorAnimationSubscription.cancel(); + _errorAnimationSubscription?.cancel(); super.dispose(); } @@ -791,7 +792,6 @@ class _MoonAuthCodeState extends State with TickerProviderStateMix child: Stack( children: [ AbsorbPointer( - // child: AutofillGroup(child: textField), child: AutofillGroup(child: _getTextFormField()), ), Positioned( diff --git a/lib/src/widgets/buttons/button.dart b/lib/src/widgets/buttons/button.dart index f07c5bd5..7e81c48b 100644 --- a/lib/src/widgets/buttons/button.dart +++ b/lib/src/widgets/buttons/button.dart @@ -137,7 +137,7 @@ class MoonButton extends StatelessWidget { final Curve? pulseEffectCurve; /// The padding of the button. - final EdgeInsets? padding; + final EdgeInsetsGeometry? padding; /// The border radius of the button. final BorderRadius? borderRadius; @@ -246,7 +246,7 @@ class MoonButton extends StatelessWidget { Curve? hoverEffectCurve, Curve? scaleEffectCurve, Curve? pulseEffectCurve, - EdgeInsets? padding, + EdgeInsetsGeometry? padding, BorderRadius? borderRadius, Widget? icon, }) { @@ -336,14 +336,18 @@ class MoonButton extends StatelessWidget { final MoonButtonSizeProperties effectiveMoonButtonSize = _getMoonButtonSize(context, buttonSize); final double effectiveHeight = height ?? effectiveMoonButtonSize.height; + final double effectiveGap = gap ?? effectiveMoonButtonSize.gap; - final EdgeInsets effectivePadding = padding ?? effectiveMoonButtonSize.padding; + + final EdgeInsetsGeometry effectivePadding = padding ?? effectiveMoonButtonSize.padding; + + final EdgeInsets resolvedDirectionalPadding = effectivePadding.resolve(Directionality.of(context)); final EdgeInsetsDirectional correctedPadding = EdgeInsetsDirectional.fromSTEB( - leading == null && label != null ? effectivePadding.left : 0, - effectivePadding.top, - trailing == null && label != null ? effectivePadding.right : 0, - effectivePadding.bottom, + leading == null && label != null ? resolvedDirectionalPadding.left : 0, + resolvedDirectionalPadding.top, + trailing == null && label != null ? resolvedDirectionalPadding.right : 0, + resolvedDirectionalPadding.bottom, ); final Color effectiveBorderColor = diff --git a/lib/src/widgets/chips/chip.dart b/lib/src/widgets/chips/chip.dart index 40326fa7..94e3283c 100644 --- a/lib/src/widgets/chips/chip.dart +++ b/lib/src/widgets/chips/chip.dart @@ -108,7 +108,7 @@ class MoonChip extends StatelessWidget { final Curve? hoverEffectCurve; /// The padding of the chip. - final EdgeInsets? padding; + final EdgeInsetsGeometry? padding; /// The border radius of the chip. final BorderRadius? borderRadius; @@ -205,14 +205,18 @@ class MoonChip extends StatelessWidget { final MoonChipSizeProperties effectiveMoonChipSize = _getMoonChipSize(context, chipSize); final double effectiveHeight = height ?? effectiveMoonChipSize.height; + final double effectiveGap = gap ?? effectiveMoonChipSize.gap; - final EdgeInsets effectivePadding = padding ?? effectiveMoonChipSize.padding; + + final EdgeInsetsGeometry effectivePadding = padding ?? effectiveMoonChipSize.padding; + + final EdgeInsets resolvedDirectionalPadding = effectivePadding.resolve(Directionality.of(context)); final EdgeInsetsDirectional correctedPadding = EdgeInsetsDirectional.fromSTEB( - leading == null && label != null ? effectivePadding.left : 0, - effectivePadding.top, - trailing == null && label != null ? effectivePadding.right : 0, - effectivePadding.bottom, + leading == null && label != null ? resolvedDirectionalPadding.left : 0, + resolvedDirectionalPadding.top, + trailing == null && label != null ? resolvedDirectionalPadding.right : 0, + resolvedDirectionalPadding.bottom, ); final BorderRadius effectiveBorderRadius = borderRadius ?? effectiveMoonChipSize.borderRadius; diff --git a/lib/src/widgets/chips/text_chip.dart b/lib/src/widgets/chips/text_chip.dart index f39a7516..cccc67d3 100644 --- a/lib/src/widgets/chips/text_chip.dart +++ b/lib/src/widgets/chips/text_chip.dart @@ -93,7 +93,7 @@ class MoonTextChip extends StatelessWidget { final Curve? hoverEffectCurve; /// The padding of the chip. - final EdgeInsets? padding; + final EdgeInsetsGeometry? padding; /// The border radius of the chip. final BorderRadius? borderRadius; diff --git a/lib/src/widgets/popover/popover.dart b/lib/src/widgets/popover/popover.dart index ce335d16..aae1fe03 100644 --- a/lib/src/widgets/popover/popover.dart +++ b/lib/src/widgets/popover/popover.dart @@ -42,7 +42,7 @@ class MoonPopover extends StatefulWidget { final double? maxHeight; /// Padding around the popover content. - final EdgeInsets? contentPadding; + final EdgeInsetsGeometry? contentPadding; /// The distance from the tip of the popover arrow (tail) to the target widget. final double? distanceToTarget; @@ -366,7 +366,7 @@ class MoonPopoverState extends State with RouteAware, SingleTickerP final double effectiveDistanceToTarget = widget.distanceToTarget ?? context.moonTheme?.popoverTheme.properties.distanceToTarget ?? 8; - final EdgeInsets effectiveContentPadding = + final EdgeInsetsGeometry effectiveContentPadding = widget.contentPadding ?? context.moonTheme?.popoverTheme.properties.contentPadding ?? const EdgeInsets.all(12); final BorderRadius effectiveBorderRadius = diff --git a/lib/src/widgets/switch/switch.dart b/lib/src/widgets/switch/switch.dart index e704447d..ab97a054 100644 --- a/lib/src/widgets/switch/switch.dart +++ b/lib/src/widgets/switch/switch.dart @@ -51,7 +51,7 @@ class MoonSwitch extends StatefulWidget { final Color? thumbColor; /// The padding of the switch. - final EdgeInsets? padding; + final EdgeInsetsGeometry? padding; /// The duration for the switch animation. final Duration? duration; @@ -280,9 +280,15 @@ class _MoonSwitchState extends State with SingleTickerProviderStateM final MoonSwitchSizeProperties effectiveMoonSwitchSize = _getMoonSwitchSize(context, widget.switchSize); final double effectiveWidth = widget.width ?? effectiveMoonSwitchSize.width; + final double effectiveHeight = widget.height ?? effectiveMoonSwitchSize.height; + final double effectiveThumbSizeValue = widget.thumbSizeValue ?? effectiveMoonSwitchSize.thumbSizeValue; - final EdgeInsets effectivePadding = widget.padding ?? effectiveMoonSwitchSize.padding; + + final EdgeInsetsGeometry effectivePadding = widget.padding ?? effectiveMoonSwitchSize.padding; + + final EdgeInsets resolvedDirectionalPadding = effectivePadding.resolve(Directionality.of(context)); + final BorderRadius effectiveBorderRadius = BorderRadius.circular(effectiveThumbSizeValue / 2); final Color effectiveActiveTrackColor = @@ -400,7 +406,7 @@ class _MoonSwitchState extends State with SingleTickerProviderStateM details: details, switchWidth: effectiveWidth, thumbSizeValue: effectiveThumbSizeValue, - padding: effectivePadding, + padding: resolvedDirectionalPadding, ), onHorizontalDragEnd: _handleDragEnd, child: RepaintBoundary( @@ -417,7 +423,7 @@ class _MoonSwitchState extends State with SingleTickerProviderStateM child: DecoratedBoxTransition( decoration: _trackDecorationAnimation!, child: Padding( - padding: effectivePadding, + padding: resolvedDirectionalPadding, child: Stack( alignment: Alignment.center, children: [ @@ -437,7 +443,7 @@ class _MoonSwitchState extends State with SingleTickerProviderStateM ), ), ), - SizedBox(width: effectivePadding.left), + SizedBox(width: resolvedDirectionalPadding.left), IconTheme( data: IconThemeData(color: inactiveTextColor), child: AnimatedDefaultTextStyle( diff --git a/lib/src/widgets/tag/tag.dart b/lib/src/widgets/tag/tag.dart index ca7f56b5..f510c1da 100644 --- a/lib/src/widgets/tag/tag.dart +++ b/lib/src/widgets/tag/tag.dart @@ -40,7 +40,7 @@ class MoonTag extends StatelessWidget { final Color? textColor; /// The padding of the tag. - final EdgeInsets? padding; + final EdgeInsetsGeometry? padding; /// The border radius of the tag. final BorderRadius? borderRadius; @@ -110,18 +110,22 @@ class MoonTag extends StatelessWidget { _getTextColor(context, isDarkMode: context.isDarkMode, effectiveBackgroundColor: effectiveBackgroundColor); final MoonTagSizeProperties effectiveMoonTagSize = _getMoonTagSize(context, tagSize); + final double effectiveHeight = height ?? effectiveMoonTagSize.height; + final double effectiveGap = gap ?? effectiveMoonTagSize.gap; final BorderRadius effectiveBorderRadius = borderRadius ?? effectiveMoonTagSize.borderRadius; - final EdgeInsets effectivePadding = padding ?? effectiveMoonTagSize.padding; + final EdgeInsetsGeometry effectivePadding = padding ?? effectiveMoonTagSize.padding; + + final EdgeInsets resolvedDirectionalPadding = effectivePadding.resolve(Directionality.of(context)); final EdgeInsetsDirectional correctedPadding = EdgeInsetsDirectional.fromSTEB( - leading == null && label != null ? effectivePadding.left : 0, - effectivePadding.top, - trailing == null && label != null ? effectivePadding.right : 0, - effectivePadding.bottom, + leading == null && label != null ? resolvedDirectionalPadding.left : 0, + resolvedDirectionalPadding.top, + trailing == null && label != null ? resolvedDirectionalPadding.right : 0, + resolvedDirectionalPadding.bottom, ); return Semantics( diff --git a/lib/src/widgets/toast/toast.dart b/lib/src/widgets/toast/toast.dart index 1360bca0..b1f00e16 100644 --- a/lib/src/widgets/toast/toast.dart +++ b/lib/src/widgets/toast/toast.dart @@ -58,10 +58,10 @@ class MoonToast { bool isPersistent = true, /// The margin around toast. - EdgeInsets? margin, + EdgeInsetsGeometry? margin, ///The padding around toast children. - EdgeInsets? padding, + EdgeInsetsGeometry? padding, /// The horizontal space between toast children. double? gap, @@ -107,7 +107,7 @@ class MoonToast { final BorderRadius effectiveBorderRadius = borderRadius ?? context.moonTheme?.toastTheme.properties.borderRadius ?? MoonBorders.borders.surfaceSm; - final EdgeInsets effectiveContentPadding = + final EdgeInsetsGeometry effectiveContentPadding = padding ?? context.moonTheme?.toastTheme.properties.contentPadding ?? EdgeInsets.all(MoonSizes.sizes.x2s); final double effectiveGap = gap ?? context.moonTheme?.toastTheme.properties.gap ?? MoonSizes.sizes.x2s; diff --git a/lib/src/widgets/tooltip/tooltip.dart b/lib/src/widgets/tooltip/tooltip.dart index 53aed5a1..48df2302 100644 --- a/lib/src/widgets/tooltip/tooltip.dart +++ b/lib/src/widgets/tooltip/tooltip.dart @@ -53,7 +53,7 @@ class MoonTooltip extends StatefulWidget { final double? maxHeight; /// Padding around the tooltip content. - final EdgeInsets? contentPadding; + final EdgeInsetsGeometry? contentPadding; /// The width of the tooltip arrow (tail) at its base. final double? arrowBaseWidth; @@ -407,7 +407,7 @@ class _MoonTooltipState extends State with RouteAware, SingleTicker final double effectiveArrowTipDistance = widget.arrowTipDistance ?? context.moonTheme?.tooltipTheme.properties.arrowTipDistance ?? 8; - final EdgeInsets effectiveContentPadding = + final EdgeInsetsGeometry effectiveContentPadding = widget.contentPadding ?? context.moonTheme?.tooltipTheme.properties.contentPadding ?? const EdgeInsets.all(12); final BorderRadius effectiveBorderRadius = widget.borderRadius ??