# lerp method Null safety

lerp(
)
override

Linearly interpolate between two LinearSteps.

If either `LinearSteps` is `null`, this function linearly interpolates from a `LinearSteps` that matches the other in begin, end, stops and tileMode and with the same colors but transparent (using scale).

The `t` argument represents a 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 `0.0 < t < 1.0` meaning that the interpolation is at the relevant point as a percentage along 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 Gradient? lerp(LinearShadedSteps? a, LinearShadedSteps? b, double t) {
if (a == null && b == null) return null;
if (a == null) return b!.scale(t);
if (b == null) return a.scale(1.0 - t);
// return GradientTween(begin: a, end: b).lerp(t);
final stretched = PrimitiveGradient.fromStretchLerp(a, b, t);
t < 0.5 ? PrimitiveGradient.from(a) : stretched,
t < 0.5 ? stretched : PrimitiveGradient.from(b),
// t < 0.5 ? t * 2 : (t - 0.5) * 2);
t);

// // final interpolated = PrimitiveGradient.byCombination(a, b, t);
// // final interpolated = PrimitiveGradient.fromStretchLerp(a, b, t);
// // final interpolated = PrimitiveGradient.byProgressiveMerge(