lerpGradient function
Lerps between a LinearGradient colors, based on t
Implementation
Color lerpGradient(List<Color> colors, List<double> stops, double t) {
final length = colors.length;
if (stops.length != length) {
/// provided gradientColorStops is invalid and we calculate it here
stops = List.generate(length, (i) => (i + 1) / length);
}
for (var s = 0; s < stops.length - 1; s++) {
final leftStop = stops[s];
final rightStop = stops[s + 1];
final leftColor = colors[s];
final rightColor = colors[s + 1];
if (t <= leftStop) {
return leftColor;
} else if (t < rightStop) {
final sectionT = (t - leftStop) / (rightStop - leftStop);
return Color.lerp(leftColor, rightColor, sectionT)!;
}
}
return colors.last;
}