onKey method
Implementation
@override
bool onKey(KeyEvent event, RenderContext ctx) {
if (!scrollable) return false;
final s = state!;
final lines = code.split('\n').length;
// Without a precise viewport here we clamp conservatively; the renderer
// re-clamps against the actual visible height on the next draw.
final maxOff = lines > 0 ? lines - 1 : 0;
switch (event.key) {
case NamedKey.arrowUp:
if (s.scrollOffset > 0) s.scrollOffset--;
return true;
case NamedKey.arrowDown:
if (s.scrollOffset < maxOff) s.scrollOffset++;
return true;
case NamedKey.pageUp:
s.scrollOffset = (s.scrollOffset - pageStep).clamp(0, maxOff);
return true;
case NamedKey.pageDown:
s.scrollOffset = (s.scrollOffset + pageStep).clamp(0, maxOff);
return true;
case NamedKey.home:
s.scrollOffset = 0;
return true;
case NamedKey.end:
s.scrollOffset = maxOff;
return true;
default:
return false;
}
}