paintSelf method

  1. @override
void paintSelf(
  1. Buffer buffer,
  2. Rect area
)
override

Implementation

@override
void paintSelf(Buffer buffer, Rect area) {
  final childH = child?.height ?? 0;
  final viewH = height;
  if (childH <= viewH || viewH <= 2) return;

  final thumbSize = (viewH * viewH ~/ childH).clamp(1, viewH - 2);
  final maxScroll = childH - viewH;
  final thumbPos = maxScroll > 0
      ? ((viewH - thumbSize) * _scrollOffset ~/ maxScroll)
      : 0;
  final scrollX = area.x + area.width - 1;
  for (var i = 0; i < viewH; i++) {
    if (i >= thumbPos && i < thumbPos + thumbSize) {
      buffer.setString(scrollX, area.y + i, '█', Style(fg: Color.gray));
    } else {
      buffer.setString(scrollX, area.y + i, '░', Style(fg: Color.darkGray));
    }
  }
}