Color lerp(Color a, Color b, double t)

Linearly interpolate between two colors.

If either color is null, this function linearly interpolates from a transparent instance of the other color.

Values of t less that 0.0 or greater than 1.0 are supported. Each channel will be clamped to the range 0 to 255.

This is intended to be fast but as a result may be ugly. Consider HSVColor or writing custom logic for interpolating colors.

Source

static Color lerp(Color a, Color b, double t) {
  if (a == null && b == null)
    return null;
  if (a == null)
    return _scaleAlpha(b, t);
  if (b == null)
    return _scaleAlpha(a, 1.0 - t);
  return new Color.fromARGB(
    lerpDouble(a.alpha, b.alpha, t).toInt().clamp(0, 255),
    lerpDouble(a.red, b.red, t).toInt().clamp(0, 255),
    lerpDouble(a.green, b.green, t).toInt().clamp(0, 255),
    lerpDouble(a.blue, b.blue, t).toInt().clamp(0, 255),
  );
}