from static method
Parses from a HTMLColor instance or a string:
- #FF0000
- rgba(255,0,0, 0.5)
Implementation
static HTMLColor? from(String? color) {
if (color == null) return null;
color = color.trim().toLowerCase();
if (color.isEmpty) return null;
var matchRGBA = COLOR_PATTERN_RGBA.firstMatch(color);
if (matchRGBA != null) {
var r = int.parse(matchRGBA[1]!);
var g = int.parse(matchRGBA[2]!);
var b = int.parse(matchRGBA[3]!);
var a = matchRGBA[4] != null ? double.parse(matchRGBA[4]!) : null;
return HTMLColor(r, g, b, a);
}
var matchHex3 = COLOR_PATTERN_HEX3.firstMatch(color);
if (matchHex3 != null) {
var hex = matchHex3.group(1)!;
var sR = hex.substring(0, 1);
var sG = hex.substring(1, 2);
var sB = hex.substring(2, 3);
var r = int.tryParse(sR + sR, radix: 16)!;
var g = int.tryParse(sG + sG, radix: 16)!;
var b = int.tryParse(sB + sB, radix: 16)!;
return HTMLColor(r, g, b);
}
var matchHex6 = COLOR_PATTERN_HEX6.firstMatch(color);
if (matchHex6 != null) {
var hex = matchHex6.group(1)!;
var r = int.tryParse(hex.substring(0, 2), radix: 16)!;
var g = int.tryParse(hex.substring(2, 4), radix: 16)!;
var b = int.tryParse(hex.substring(4, 6), radix: 16)!;
return HTMLColor(r, g, b);
}
var matchARGS = COLOR_PATTERN_ARGS.firstMatch(color);
if (matchARGS != null) {
var r = int.parse(matchARGS[1]!);
var g = int.parse(matchARGS[2]!);
var b = int.parse(matchARGS[3]!);
var a = matchARGS[4] != null ? double.parse(matchARGS[4]!) : null;
return HTMLColor(r, g, b, a);
}
return null;
}