paintSelf method
void
paintSelf(
- Buffer buffer,
- 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));
}
}
}