circle method
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);
}