paint method
Called each time the AnimatedBackground needs to repaint.
The canvas provided in the context is already offset by the amount
specified in offset, however the parameter is provided to make the
signature of the methods uniform.
Implementation
@override
void paint(PaintingContext context, Offset offset) {
Canvas canvas = context.canvas;
Paint paint = Paint()..strokeCap = StrokeCap.round;
final bool axisHorizontal =
(direction == LineDirection.Ltr || direction == LineDirection.Rtl);
final int sign =
(direction == LineDirection.Ltr || direction == LineDirection.Ttb)
? 1
: -1;
for (var line in lines!) {
final tailDirection = axisHorizontal
? Offset(sign * line.speed / 2.0, 0.0)
: Offset(0.0, sign * line.speed / 2.0);
final headDelta =
axisHorizontal ? Offset(20.0 * sign, 0.0) : Offset(0.0, 20.0 * sign);
final target = line.position! + tailDirection;
paint
..shader = ui.Gradient.linear(line.position!, target - headDelta,
<Color>[line.color!.withAlpha(0), line.color!])
..strokeWidth = line.thickness.toDouble();
canvas.drawLine(line.position!, target, paint);
}
}