from static method

HTMLColor? from(
  1. String? color
)

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