visibleRows static method

List<TreeRow> visibleRows(
  1. TreeDataTableProvider provider,
  2. List<TreeRow> roots
)

Returns expanded rows in display order and starts lazy child loading when needed.

Implementation

static List<TreeRow> visibleRows(
  TreeDataTableProvider provider,
  List<TreeRow> roots,
) {
  final visibleRows = <TreeRow>[];

  void appendRows(List<TreeRow> rows) {
    for (final row in rows) {
      visibleRows.add(row);
      if (!row.isExpanded.value) {
        continue;
      }
      if (!row.childrenLoaded.value && row.sourceNode != null && row.sourceNode!.hasChildren) {
        provider.loadTreeRowChildren(
          row,
          provider.buildedHeaderRows,
          level: row.level + 1,
          parentIndexes: row.pathIndexes,
        );
      }
      appendRows(row.rows);
    }
  }

  appendRows(roots);
  return visibleRows;
}