circle method

void circle(
  1. Canvas canvas,
  2. Rect rect,
  3. double value
)

Implementation

void circle(Canvas canvas, Rect rect, double value) {
  var strokeColor = Colors.white;
  var dashWidth = 2.0;
  final double opacity = (1.0 - (value / 4.0)).clamp(0.0, 1.0);
  final Color color = strokeColor.withOpacity(opacity);
  final double size = rect.width / 2;
  final double area = size * size;
  final double radius = math.sqrt(area * value / 4);
  final Paint paint = Paint(); //..color = _color;
  paint.color = color;
  paint.strokeWidth = 1.0;
  paint.style = PaintingStyle.stroke;
  final dashPath = Path();
  final dashCount = (rect.width / 2)
      .round(); //(2 * math.pi * radius / (dashWidth + dashSpace)).ceil();
  final center = Offset(rect.width / 2, rect.height / 2);
  for (int i = 0; i < dashCount; i++) {
    final angle = 2 * math.pi * i / dashCount;
    final startX = center.dx + math.cos(angle) * radius;
    final startY = center.dy + math.sin(angle) * radius;
    final endX =
        center.dx + math.cos(angle + math.pi / 180 * dashWidth) * radius;
    final endY =
        center.dy + math.sin(angle + math.pi / 180 * dashWidth) * radius;

    dashPath.moveTo(startX, startY);
    dashPath.lineTo(endX, endY);
  }

  canvas.drawPath(dashPath, paint);
}