createTreeRowNodesPages method

void createTreeRowNodesPages(
  1. List<TreeRowNode> treeRowNodes
)
inherited

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();
}