parseColor function
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;
}
}