drawPhaseTextInside method
void
drawPhaseTextInside()
Draw Phase text inside circle like Menstruation, Ovulation etc
Implementation
void drawPhaseTextInside(Canvas canvas, Offset center, double radius,
int startDay, int endDay, Color textColor, String label) {
final startAngle = (2 * pi / totalCycleDays) * startDay - pi / 2;
final sweepAngle = (2 * pi / totalCycleDays) * (endDay - startDay);
final textPainter = TextPainter(
textAlign: TextAlign.center,
textDirection:
(isArabicLanguage()) ? TextDirection.rtl : TextDirection.ltr,
);
final labelAngle = startAngle + sweepAngle / 2;
final labelRadius = radius / 2;
final labelX = center.dx + labelRadius * cos(labelAngle);
final labelY = center.dy + labelRadius * sin(labelAngle);
/// Calculate rotation angle
double rotationAngle;
if (labelAngle > pi / 2 && labelAngle < 3 * pi / 2) {
rotationAngle = labelAngle - pi;
} else {
rotationAngle = labelAngle;
}
canvas.save();
canvas.translate(labelX, labelY);
canvas.rotate(rotationAngle);
canvas.translate(-labelX, -labelY);
final labelText = TextSpan(
text: label,
style: TextStyle(
color: textColor,
fontSize: insidePhasesTextSize,
fontWeight: FontWeight.bold,
fontFamily: getFontFamily()),
);
textPainter.text = labelText;
textPainter.layout();
textPainter.paint(
canvas,
Offset(
labelX - textPainter.width / 2,
labelY - textPainter.height / 2,
),
);
canvas.restore();
}