listWindow<T> method
void
listWindow<T>(
- ListWindow<
T> window, { - required int selectedIndex,
- required void renderItem(),
Renders a ListWindow with selection and custom rendering.
This handles overflow indicators automatically and delegates item rendering to the provided callback.
Example:
final window = nav.visibleWindow(items);
ctx.listWindow(
window,
selectedIndex: nav.selectedIndex,
renderItem: (item, index, isFocused) {
ctx.selectableItem(item.toString(), focused: isFocused);
},
);
Implementation
void listWindow<T>(
ListWindow<T> window, {
required int selectedIndex,
required void Function(T item, int absoluteIndex, bool isFocused)
renderItem,
}) {
if (window.hasOverflowAbove) {
overflowIndicator();
}
for (var i = 0; i < window.items.length; i++) {
final absoluteIndex = window.start + i;
final isFocused = absoluteIndex == selectedIndex;
renderItem(window.items[i], absoluteIndex, isFocused);
}
if (window.hasOverflowBelow) {
overflowIndicator();
}
}