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 borderWidget = widget as LeftBorder;
  final padding = borderWidget.padding;
  final requiredWidth = 1 + padding.left + padding.right;
  final requiredHeight = padding.top + padding.bottom;
  if (size.width <= requiredWidth || size.height <= requiredHeight) return;

  final limit = borderWidget.borderHeight ?? size.height;
  // 1. Draw the vertical line on the left
  for (var y = 0; y < size.height; y++) {
    final cellChar = y < limit ? borderWidget.char : ' ';
    buffer.setAttributes(
      offset.dx.toInt(),
      (offset.dy + y).toInt(),
      char: cellChar,
      fg: borderWidget.style.foreground?.argb,
      bg: borderWidget.style.background?.argb,
      modifiers: borderWidget.style.modifiers,
    );
  }

  // 2. Render the child in the remaining area
  if (childElement != null) {
    childElement!.paint(buffer, offset + childElement!.relativeOffset);
  }
}