parseColor function

Color? parseColor(
  1. String color
)

Parses color strings

Implementation

Color? parseColor(String color) {
  var trimmed = color.trim().toLowerCase();
  if (trimmed.startsWith('#')) {
    trimmed = trimmed.substring(1);
  }

  if (trimmed.isEmpty) return null;

  // Match color names first
  final namedColor = switch (trimmed) {
    "red" => const Color(0xFFFF0000),
    "blue" => const Color(0xFF0000FF),
    "green" => const Color(0xFF008000),
    "black" => const Color(0xFF000000),
    "white" => const Color(0xFFFFFFFF),
    "gray" || "grey" => const Color(0xFF808080),
    "yellow" => const Color(0xFFFFFF00),
    "cyan" => const Color(0xFF00FFFF),
    "magenta" => const Color(0xFFFF00FF),
    "orange" => const Color(0xFFFFA500),
    "purple" => const Color(0xFF800080),
    "brown" => const Color(0xFFA52A2A),
    "pink" => const Color(0xFFFFC0CB),
    "lime" => const Color(0xFF00FF00),
    "navy" => const Color(0xFF000080),
    "teal" => const Color(0xFF008080),
    "violet" => const Color(0xFFEE82EE),
    _ => null,
  };
  if (namedColor != null) return namedColor;

  // Try hex parsing
  try {
    switch (trimmed.length) {
      case 6:
        final rgb = int.tryParse(trimmed, radix: 16);
        if (rgb == null || rgb > 0xFFFFFF) return null;
        return Color(0xFF000000 | rgb);
      case 8:
        final argb = int.tryParse(trimmed, radix: 16);
        if (argb == null || argb > 0xFFFFFFFF) return null;
        return Color(argb);
      default:
        HLog.e(_tag, "⚠️ Unknown color: '$color' (trimmed: '$trimmed')");
        return null;
    }
  } catch (e) {
    HLog.e(_tag, "❌ Error parsing color '$color': $e");
    return null;
  }
}