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

Linearly interpolate between two border sides.

Source

static BorderSide lerp(BorderSide a, BorderSide b, double t) {
  assert(a != null);
  assert(b != null);
  if (t == 0.0)
    return a;
  if (t == 1.0)
    return b;
  if (a.style == b.style) {
    return new BorderSide(
      color: Color.lerp(a.color, b.color, t),
      width: ui.lerpDouble(a.width, b.width, t),
      style: a.style // == b.style
    );
  }
  Color colorA, colorB;
  switch (a.style) {
    case BorderStyle.solid:
      colorA = a.color;
      break;
    case BorderStyle.none:
      colorA = a.color.withAlpha(0x00);
      break;
  }
  switch (b.style) {
    case BorderStyle.solid:
      colorB = b.color;
      break;
    case BorderStyle.none:
      colorB = b.color.withAlpha(0x00);
      break;
  }
  return new BorderSide(
    color: Color.lerp(colorA, colorB, t),
    width: ui.lerpDouble(a.width, b.width, t),
    style: BorderStyle.solid
  );
}