# lerpList method

List<Shadow> lerpList (List<Shadow> a, List<Shadow> b, double t)

Linearly interpolate between two lists of shadows.

If the lists differ in length, excess items are lerped with null.

The `t` argument represents position on the timeline, with 0.0 meaning that the interpolation has not started, returning `a` (or something equivalent to `a`), 1.0 meaning that the interpolation has finished, returning `b` (or something equivalent to `b`), and values in between meaning that the interpolation is at the relevant point on the timeline between `a` and `b`. The interpolation can be extrapolated beyond 0.0 and 1.0, so negative values and values greater than 1.0 are valid (and can easily be generated by curves such as `Curves.elasticInOut`).

Values for `t` are usually obtained from an `Animation<double>`, such as an `AnimationController`.

## Implementation

    static List<Shadow> lerpList(List<Shadow> a, List<Shadow> b, double t) {
      assert(t != null);
      if (a == null && b == null)
        return null;
      a ??= <Shadow>[];
      b ??= <Shadow>[];
      final List<Shadow> result = <Shadow>[];
      final int commonLength = math.min(a.length, b.length);
      for (int i = 0; i < commonLength; i += 1)
        result.add(Shadow.lerp(a[i], b[i], t));
      for (int i = commonLength; i < a.length; i += 1)
        result.add(a[i].scale(1.0 - t));
      for (int i = commonLength; i < b.length; i += 1)
        result.add(b[i].scale(t));
      return result;
    }