ButtonBackingDecoration constructor

ButtonBackingDecoration({
  1. required buttonDecorationVariants variant,
  2. required dynamic decorationVariant,
})

Implementation

ButtonBackingDecoration({required this.variant, required decorationVariant})
    : super(decorationVariant: decorationVariant) {
  //defining variants for the specific item

  switch (variant) {
    // -- CIRCLE ( )
    case buttonDecorationVariants.circle:
      decorationCornerRadius = BorderRadius.circular(100);
      break;
    // -- ROUNDED PILL (-----)
    case buttonDecorationVariants.roundedPill:
      decorationCornerRadius = BorderRadius.circular(30);
      break;
    // -- ROUNDED RECTANGLE {-----}
    case buttonDecorationVariants.roundedRectangle:
      decorationCornerRadius = BorderRadius.circular(7);
      break;
    // -- EDGED RECTANGLE [-----]
    case buttonDecorationVariants.edgedRectangle:
      decorationCornerRadius = BorderRadius.circular(0);
      break;
  }

  switch (decorationVariant) {
    // when something is clickable, but not chosen
    case decorationPriority.inactive:
      {
        decorationFill = coloration.inactiveColor();
        return;
      }

    // when something is active, or chosen
    case decorationPriority.active:
      {
        decorationFill = coloration.contrastColor().withOpacity(0.4);
        decorationBorder = Border.all(
            color: coloration.contrastColor().withOpacity(0.8), width: 1);
        break;
      }

    // when something is standard, but neither inactive nor active.
    case decorationPriority.standard:
      {
        decorationFill = palette.brightness() == Brightness.light
            ? palette.lightModeFill()
            : palette.darkModeFill();
        decorationBorder = palette.brightness() == Brightness.light
            ? palette.lightModeBorder()
            : palette.darkModeBorder();
        break;
      }

    // Super important, needs highest UI CTA
    case decorationPriority.important:
      {
        decorationGradient = palette.brightness() == Brightness.light
            ? palette.darkGradient()
            : palette.lightGradient();
        decorationBorder = palette.universalBorder();
        break;
      }

    // item is inverted to have colors of the opposite mode.
    case decorationPriority.inverted:
      {
        decorationFill = palette.brightness() == Brightness.light
            ? palette.darkModeFill()
            : palette.lightModeFill();
        decorationBorder = palette.brightness() == Brightness.light
            ? palette.darkModeBorder()
            : palette.lightModeBorder();
        break;
      }
  }
}