convert method

  1. @override
Shader convert(
  1. covariant LineShader begin,
  2. covariant LineShader end,
  3. 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,
  );
}