drawInsideText method
void
drawInsideText(})
Implementation
void drawInsideText(Canvas canvas, double radius1, Size size, String text,
int startDay, int endDay,
{Offset? offset, bool adjust = true}) {
final startAngle = (2 * pi / 9) * startDay - pi / 2;
final sweepAngle = (2 * pi / 9) * (endDay - startDay);
double radius = radius1; // Adjust space btn arc and text
double angle = startAngle;
if (adjust) {
angle += sweepAngle / 2 -
(text.length *
5 *
pi /
500); // Adjust starting angle for centering text
}
for (int i = 0; i < text.length; i++) {
final char = text[i];
double charAngle = angle + i * 5 * 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: (i == 0) ? "$char " : char,
style: TextStyle(
color: Colors.white,
fontSize: (startDay == currentMonth) ? 10 : 7,
fontFamily: getFontFamily(),
fontWeight: (startDay == currentMonth)
? FontWeight.bold
: FontWeight.normal,
letterSpacing: 1),
),
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();
}
}