expandAncestors method

void expandAncestors(
  1. T node, [
  2. @Deprecated('Use [TreeController.parentProvider] instead.') ParentProvider<T>? parentProvider
])

Walks up the ancestors of node setting their expansion state to true. Note: node is not expanded by this method.

This can be used to reveal a hidden node (e.g. when searching for a node in a search view).

parentProvider should return the direct parent of the given node or null if the root node is reached, this callback is used to traverse the ancestors of node.

This method depends on TreeController.parentProvider and will throw an AssertionError in debug mode if parentProvider is not defined.

Implementation

void expandAncestors(
  T node, [
  @Deprecated('Use [TreeController.parentProvider] instead.')
  ParentProvider<T>? parentProvider,
]) {
  assert(() {
    if (parentProvider == null) return _debugCheckHasParentProvider();
    return true;
  }());
  parentProvider ??= this.parentProvider;

  T? current = parentProvider(node);

  if (current == null) return;

  while (current != null) {
    _expand(current);
    current = parentProvider(current);
  }

  rebuild();
}