parseHexColor static method

Color? parseHexColor(
  1. String? hex
)

Parses #rgb, #rrggbb or #rrggbbaa.

Implementation

static Color? parseHexColor(String? hex) {
  if (hex == null) return null;
  var h = hex.trim();
  if (h.startsWith('#')) h = h.substring(1);
  if (h.length == 3) h = h.split('').map((c) => '$c$c').join();
  if (h.length == 6) h = 'FF$h';
  if (h.length == 8) {
    // Input is rrggbbaa; ARGB wants aarrggbb.
    final v = int.tryParse(h, radix: 16);
    if (v == null) return null;
    if (hex.trim().replaceFirst('#', '').length == 8) {
      final rgb = (v >> 8) & 0xFFFFFF;
      final a = v & 0xFF;
      return Color((a << 24) | rgb);
    }
    return Color(v);
  }
  return null;
}