drawOutSide method
void
drawOutSide(})
Draw Phase text outside circle like Menstruation, Ovulation etc
Implementation
void drawOutSide(Canvas canvas, double radius1, Size size, String text,
int startDay, int endDay, Color color,
{Offset? offset, bool adjust = true}) {
final startAngle = (2 * pi / totalCycleDays) * startDay - pi / 2;
final sweepAngle = (2 * pi / totalCycleDays) * (endDay - startDay);
double radius =
radius1 + outsideTextSpaceFromArc; // Adjust space btn arc and text
double angle = startAngle;
if (adjust) {
angle += sweepAngle / 2 -
(text.length *
5 *
pi /
600); // Adjust starting angle for centering text
}
for (int i = 0; i < text.length; i++) {
final char = text[i];
double charAngle = angle +
i * outsideTextCharSpace * pi / 180; // Adjust character spacing
Offset charOffset = Offset(
size.width / 2 + radius * cos(charAngle),
size.height / 2 + radius * sin(charAngle),
);
TextPainter textPainter = TextPainter(
text: TextSpan(
text: char,
style: TextStyle(
color: color,
fontSize: outsidePhasesTextSize,
fontFamily: getFontFamily()),
),
textAlign: TextAlign.center,
textDirection:
(isArabicLanguage()) ? TextDirection.rtl : TextDirection.ltr,
);
textPainter.layout();
canvas.save();
canvas.translate(charOffset.dx, charOffset.dy);
canvas.rotate(charAngle + pi / 2);
textPainter.paint(
canvas, Offset(-textPainter.width / 2, -textPainter.height / 2));
canvas.restore();
}
}