toHex method
Implementation
@override
String toHex() {
double _y = (l + 16) / 116,
_x = a / 500 + _y,
_z = _y - b / 200,
_r,
_g,
_b;
_x = 0.95047 *
((_x * _x * _x > 0.008856) ? _x * _x * _x : (_x - 16 / 116) / 7.787);
_y = 1.00000 *
((_y * _y * _y > 0.008856) ? _y * _y * _y : (_y - 16 / 116) / 7.787);
_z = 1.08883 *
((_z * _z * _z > 0.008856) ? _z * _z * _z : (_z - 16 / 116) / 7.787);
_r = _x * 3.2406 + _y * -1.5372 + _z * -0.4986;
_g = _x * -0.9689 + _y * 1.8758 + _z * 0.0415;
_b = _x * 0.0557 + _y * -0.2040 + _z * 1.0570;
_r = (_r > 0.0031308) ? (1.055 * pow(_r, 1 / 2.4) - 0.055) : 12.92 * _r;
_g = (_g > 0.0031308) ? (1.055 * pow(_g, 1 / 2.4) - 0.055) : 12.92 * _g;
_b = (_b > 0.0031308) ? (1.055 * pow(_b, 1 / 2.4) - 0.055) : 12.92 * _b;
Function toHex = (double x) {
var hex = (x * 255).round().toRadixString(16);
return hex.length == 1 ? '0' + hex : hex;
};
return "#" +
toHex(max(0, min(1, _r)).toDouble()) +
toHex(max(0, min(1, _g)).toDouble()) +
toHex(max(0, min(1, _b)).toDouble());
}