drawValue method
Implementation
void drawValue(Canvas canvas, int index, Paint paint) {
if (value == null || value!.isEmpty || value!.length <= index) {
return;
}
if (obscureText) {
paint.style = PaintingStyle.fill;
paint.color = contentColor!;
final Offset offset = Offset(
(2 * index + 1) * mSize / 2 + index * space,
mSize / 2,
);
final Rect rect = Rect.fromCircle(
center: offset,
radius: mSize / 8,
);
final RRect rRect = RRect.fromRectAndRadius(
rect,
Radius.circular(mSize / 8),
);
canvas.drawRRect(rRect, paint);
} else {
final String tempValue = value!.split('')[index];
final ui.ParagraphBuilder pb = ui.ParagraphBuilder(
ui.ParagraphStyle(
textAlign: TextAlign.center,
fontStyle: FontStyle.normal,
fontSize: 15.0,
),
);
pb.pushStyle(ui.TextStyle(color: contentColor));
pb.addText(tempValue);
final ui.ParagraphConstraints pc =
ui.ParagraphConstraints(width: mSize / 2);
final ui.Paragraph paragraph = pb.build()..layout(pc);
final Offset offset = Offset(
(2 * index + 1) * mSize / 2 + index * space - paragraph.width / 2,
mSize / 2 - paragraph.height / 2,
);
canvas.drawParagraph(
paragraph,
offset,
);
}
}