parseColor function

Color? parseColor(
  1. String? value
)

Parses a CSS/SVG hex color (#RGB, #RRGGBB, or #RRGGBBAA). Supported named colors: red → ChantColors.rubric, black → ChantColors.nigric.

Implementation

Color? parseColor(String? value) {
  if (value == null) return null;
  switch (value.toLowerCase()) {
    case 'red':
      return ChantColors.rubric;
    case 'black':
      return ChantColors.nigric;
  }
  var hex = value.startsWith('#') ? value.substring(1) : value;
  switch (hex.length) {
    case 3: // #RGB -> expand each digit, opaque alpha
      final r = hex[0], g = hex[1], b = hex[2];
      hex = '$r$r$g$g$b${b}ff';
      break;
    case 6:
      hex = '${hex}ff';
      break;
    case 8:
      break;
    default:
      return null;
  }
  // Convert RGBA to Flutter's ARGB.
  final rgba = int.parse(hex, radix: 16);
  final rgb = rgba >> 8;
  final a = rgba & 0xff;
  return Color((a << 24) | rgb);
}