TreeController<T extends Object> constructor

TreeController<T extends Object>({
  1. required Iterable<T> roots,
  2. required ChildrenProvider<T> childrenProvider,
  3. ParentProvider<T>? parentProvider,
  4. bool defaultExpansionState = false,
})

Creates a TreeController.

The roots parameter should contain all nodes that occupy the level 0 of the tree, these nodes are going to be used as a starting point when traversing the tree and building tree views.

The parentProvider callback should return the direct parent of the tree node that's given to it or null when given a root node. Some methods like checkNodeHasAncestor require this callback to be defined and will throw an AssertionError in debug mode. When parentProvider is not defined, TreeController.parentProvider is set to a callback that always returns null.

Implementation

TreeController({
  required Iterable<T> roots,
  required this.childrenProvider,
  ParentProvider<T>? parentProvider,
  this.defaultExpansionState = false,
}) : _roots = roots {
  assert(() {
    _debugHasParentProvider = parentProvider != null;
    return true;
  }());
  this.parentProvider = parentProvider ?? (T node) => null;
}