drawValue method

void drawValue(
  1. Canvas canvas,
  2. int index,
  3. Paint paint
)

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,
    );
  }
}