createTreeRowNodesPages method
Paginates the root nodes using the selected page size.
Implementation
void createTreeRowNodesPages(List<TreeRowNode> treeRowNodes) {
List<List<TreeRowNode>>? pages;
if (rowsPerPage != null && rowsPerPage!.isNotEmpty) {
final pageIndex = rowsPerPageIndexNotifier.value ?? 0;
if (pageIndex < 0 || pageIndex >= rowsPerPage!.length) {
throw RangeError.index(pageIndex, rowsPerPage!, 'rowsPerPageIndex');
}
final pageSize = rowsPerPage![pageIndex];
if (pageSize <= 0) {
throw ArgumentError.value(pageSize, 'rowsPerPage', 'Page sizes must be greater than zero');
}
pages = <List<TreeRowNode>>[];
for (var start = 0; start < treeRowNodes.length; start += pageSize) {
pages.add(treeRowNodes.sublist(start, min(start + pageSize, treeRowNodes.length)));
}
if (pages.isEmpty) {
pages.add(const <TreeRowNode>[]);
}
}
_pageItemCount = pages?.length ?? 1;
treeRowNodesPagesNotifier.value = pages;
_clampCurrentPage();
}