getButtonColor function

Color getButtonColor({
  1. required Color color,
  2. required bool disabled,
  3. required bool filled,
  4. required bool hasBeenPressed,
})

Implementation

Color getButtonColor(
    {required Color color,
    required bool disabled,
    required bool filled,
    required bool hasBeenPressed}) {
  List<Color> colors = [
    RothkoColor.kPrimaryBase,
    RothkoColor.kSuccessBase,
    RothkoColor.kWarningBase,
    RothkoColor.kAccentBase
  ];
  List<Color> darkenColors = [
    RothkoColor.kPrimaryDarken1,
    RothkoColor.kSuccessDarken1,
    RothkoColor.kWarningDarken1,
    RothkoColor.kAccentDarken1
  ];
  if (filled && (!colors.contains(color))) {
    if (disabled) {
      return RothkoColor.kLightNeutralBase;
    }
    return color;
  } else if (disabled && filled) {
    return RothkoColor.kLightNeutralBase;
  } else if (disabled && !filled) {
    if (color == RothkoColor.kErrorBase) {
      return RothkoColor.kLightNeutralLighten2;
    }
    return RothkoColor.kLightNeutralLighten1;
  } else if (!disabled && filled && hasBeenPressed) {
    int index = colors.indexWhere((element) => element == color);
    if (index == -1) {
      index = 0;
    }
    return darkenColors[index];
  } else if (filled) {
    return color;
  }

  return Colors.transparent;
}