setPaints method

void setPaints(
  1. Offset center,
  2. double width
)

Generate paints for caching

Implementation

void setPaints(Offset center, double width) {
  if (center == _center || width == _width) {
    if (_paints != null) {
      return;
    }
  }
  _center = center;
  _width = width;

  _paints = [];

  for (var i = 0; i < _colors.length; i++) {
    final initialCirclePaint = Paint()..color = _colors[i].first;
    final finalCirclePaint = Paint()..color = _colors[i].last;

    final shader = SweepGradient(
      colors: _colors[i],
      tileMode: TileMode.repeated,
      startAngle: degreeToRadians(270),
      endAngle: degreeToRadians(270 + 360.0),
    ).createShader(
      Rect.fromCircle(
        center: center,
        radius: 0,
      ),
    );

    final arcPaint = Paint()
      ..strokeCap = StrokeCap.round
      ..style = PaintingStyle.stroke
      ..strokeWidth = width
      ..shader = shader;

    _paints!.add(RingPaints(
      initialCirclePaint: initialCirclePaint,
      arcPaint: arcPaint,
      finalCirclePaint: finalCirclePaint,
    ));
  }
}