findCarpenterTreePath<T> function

List<CarpenterTreeNode<T>>? findCarpenterTreePath<T>(
  1. Iterable<CarpenterTreeNode<T>> roots,
  2. Object id
)

Returns the root-to-node path for id, or null when the node is absent.

Implementation

List<CarpenterTreeNode<T>>? findCarpenterTreePath<T>(
  Iterable<CarpenterTreeNode<T>> roots,
  Object id,
) {
  for (final node in roots) {
    if (node.id == id) return <CarpenterTreeNode<T>>[node];
    final nested = findCarpenterTreePath(node.children, id);
    if (nested != null) return <CarpenterTreeNode<T>>[node, ...nested];
  }
  return null;
}