withBorderRadius method

AbstractButtonStyle withBorderRadius({
  1. BorderRadiusGeometry? borderRadius,
  2. BorderRadiusGeometry? hoverBorderRadius,
  3. BorderRadiusGeometry? focusBorderRadius,
  4. BorderRadiusGeometry? disabledBorderRadius,
})

Creates a copy with custom border radius for different states.

Modifies the decoration to apply state-specific border radius. Only works with BoxDecoration; other decoration types are returned unchanged.

Parameters:

  • borderRadius: Border radius for normal state
  • hoverBorderRadius: Border radius when hovered
  • focusBorderRadius: Border radius when focused
  • disabledBorderRadius: Border radius when disabled

Example:

final style = ButtonVariance.primary.withBorderRadius(
  borderRadius: BorderRadius.circular(8),
  hoverBorderRadius: BorderRadius.circular(12),
);

Implementation

AbstractButtonStyle withBorderRadius(
    {BorderRadiusGeometry? borderRadius,
    BorderRadiusGeometry? hoverBorderRadius,
    BorderRadiusGeometry? focusBorderRadius,
    BorderRadiusGeometry? disabledBorderRadius}) {
  return copyWith(
    decoration: (context, states, decoration) {
      if (decoration is BoxDecoration) {
        return decoration.copyWith(
          borderRadius: states.disabled
              ? disabledBorderRadius ?? decoration.borderRadius
              : states.hovered
                  ? hoverBorderRadius ?? decoration.borderRadius
                  : states.focused
                      ? focusBorderRadius ?? decoration.borderRadius
                      : borderRadius,
        );
      }
      return decoration;
    },
  );
}