performPaint method

  1. @override
void performPaint(
  1. Buffer buffer,
  2. Offset offset
)
override

Hook for subclasses to implement actual painting.

Implementation

@override
void performPaint(Buffer buffer, Offset offset) {
  final selector = widget as NumberSelector;
  final viewport = Viewport(
    buffer,
    Rect(offset.dx, offset.dy, size.width, size.height),
  );

  final labelLen = selector.label.characters.length;
  final displayChars = '${selector.label}: < ${selector.value} >'.characters;
  final leftArrowIdx = labelLen + 2;
  final rightArrowIdx = displayChars.length - 1;

  // Render the label and spacing
  viewport.writeString(0, 0, '${selector.label}: ', selector.style);

  // Render '<' button
  viewport.writeString(leftArrowIdx, 0, '<', selector.buttonStyle);

  // Render value
  viewport.writeString(
    leftArrowIdx + 2,
    0,
    '${selector.value}',
    selector.style,
  );

  // Render '>' button
  viewport.writeString(rightArrowIdx, 0, '>', selector.buttonStyle);
}