convert method
Shader
convert(
- covariant LineShader begin,
- covariant LineShader end,
- double animatorPercent
override
Implementation
@override
Shader convert(covariant LineShader begin, covariant LineShader end, double animatorPercent) {
List<Color> colorList = [];
if (begin.colors.length == end.colors.length) {
for (int i = 0; i < begin.colors.length; i++) {
colorList.add(Color.lerp(begin.colors[i], end.colors[i], animatorPercent)!);
}
} else {
colorList = animatorPercent < 0.5 ? begin.colors : end.colors;
}
List<double>? colorStopsList;
if (begin.colorStops != null && end.colorStops != null && (begin.colorStops!.length == end.colorStops!.length)) {
colorStopsList = [];
for (int i = 0; i < begin.colors.length; i++) {
colorStopsList.add(lerpDouble(begin.colorStops![i], end.colorStops![i], animatorPercent)!);
}
} else {
colorStopsList = animatorPercent < 0.5 ? begin.colorStops : end.colorStops;
}
Float64List? ma;
if (begin.matrix4 != null && end.matrix4 != null && begin.matrix4!.length == end.matrix4!.length) {
List<double> bl = begin.matrix4!.toList();
List<double> el = end.matrix4!.toList();
List<double> list = [];
for (int i = 0; i < bl.length; i++) {
list.add(lerpDouble(bl[i], el[i], animatorPercent)!);
}
ma = Float64List.fromList(list);
} else {
ma = begin.matrix4 ?? end.matrix4;
}
return LineShader(
from: Offset.lerp(begin.from, end.from, animatorPercent)!,
to: Offset.lerp(begin.to, end.to, animatorPercent)!,
colorList,
colorStops: colorStopsList,
tileMode: begin.tileMode == TileMode.clamp ? end.tileMode : begin.tileMode,
matrix4: ma,
);
}