style property

  1. @override
ButtonStyle get style
override

Implementation

@override
ButtonStyle get style {
  Color? getColor(Set<MaterialState> states) {
    if(disable){
      return backgroundPalette.normal.withOpacity(_kDisableOpacity);
    }
    Color color= backgroundPalette.normal;
    if (states.contains(MaterialState.pressed)) {
      color = backgroundPalette.pressed;
    } else {
      const Set<MaterialState> interactiveStates = <MaterialState>{
        MaterialState.hovered,
        MaterialState.focused,
      };
      if (states.any(interactiveStates.contains)) {
        color = backgroundPalette.hover;
      }
    }
    if(disable){
      color = color.withOpacity(_kDisableOpacity);
    }
    return color;
  }

  Color? getForegroundColor(Set<MaterialState> states) {

    Color color = foregroundPalette.normal;
    if (states.contains(MaterialState.pressed)) {
      color = foregroundPalette.pressed;
    } else {
      const Set<MaterialState> interactiveStates = <MaterialState>{
        MaterialState.hovered,
        MaterialState.focused,
      };
      if (states.any(interactiveStates.contains)) {
        color = foregroundPalette.hover;
      }
    }
    if(disable){
      color = color.withOpacity(_kDisableOpacity);
    }
    return color;

  }

  OutlinedBorder? getOutlineColor(Set<MaterialState> states) {

    Color color = borderPalette.normal;

    if (states.contains(MaterialState.pressed)) {
      color = borderPalette.pressed;
    } else {
      const Set<MaterialState> interactiveStates = <MaterialState>{
        MaterialState.hovered,
        MaterialState.focused,
      };
      if (states.any(interactiveStates.contains)) {
        color = borderPalette.hover;
      }
    }
    if(disable){
      color = color.withOpacity(_kDisableOpacity);
    }

    if (dashGap == 0) {
      return RoundedRectangleBorder(
          borderRadius: borderRadius,
          side: BorderSide(width: borderWidth, color: color));
    }

    return DashOutlineShapeBorder(
        dashGap: dashGap,
        borderRadius: borderRadius,
        side: BorderSide(width: borderWidth, color: color));
  }

  return ButtonStyle(
    elevation: const MaterialStatePropertyAll(0),
    overlayColor: MaterialStateProperty.resolveWith(getColor),
    // side: MaterialStateProperty.resolveWith((getSide)),
    foregroundColor: MaterialStateProperty.resolveWith(getForegroundColor),
    backgroundColor: MaterialStateProperty.all(Colors.transparent),
    shape: MaterialStateProperty.resolveWith(getOutlineColor),
    padding: MaterialStateProperty.all(padding),
  );
}