indexed<Data> static method

TreeView<Data, IndexedTreeNode<Data>> indexed<Data>({
  1. Key? key,
  2. required TreeNodeWidgetBuilder<IndexedTreeNode<Data>> builder,
  3. required IndexedTreeNode<Data> tree,
  4. ExpansionBehavior expansionBehavior = ExpansionBehavior.none,
  5. Indentation? indentation,
  6. AutoScrollController? scrollController,
  7. ExpansionIndicatorBuilder? expansionIndicatorBuilder,
  8. ValueSetter<IndexedTreeNode<Data>>? onItemTap,
  9. bool? primary,
  10. ScrollPhysics? physics,
  11. EdgeInsetsGeometry? padding,
  12. bool shrinkWrap = false,
  13. bool showRootNode = true,
  14. bool focusToNewNode = true,
  15. TreeReadyCallback<Data, IndexedTreeNode<Data>>? onTreeReady,
})

The alternate implementation of TreeView uses an IndexedNode internally, which is based on the List data structure for maintaining the children states. The IndexedNode allows indexed based operations like insertion and removal of items at index positions. This allows for movement, addition and removal of child nodes based on indices.

The complexity for accessing child nodes in TreeView.indexed is simply O(node_level ^ children).

** See code in example/lib/samples/treeview/treeview_indexed_modification_sample.dart **

See also:

Implementation

static TreeView<Data, IndexedTreeNode<Data>> indexed<Data>({
  Key? key,
  required TreeNodeWidgetBuilder<IndexedTreeNode<Data>> builder,
  required final IndexedTreeNode<Data> tree,
  ExpansionBehavior expansionBehavior = ExpansionBehavior.none,
  Indentation? indentation,
  AutoScrollController? scrollController,
  ExpansionIndicatorBuilder? expansionIndicatorBuilder,
  ValueSetter<IndexedTreeNode<Data>>? onItemTap,
  bool? primary,
  ScrollPhysics? physics,
  EdgeInsetsGeometry? padding,
  bool shrinkWrap = false,
  bool showRootNode = true,
  bool focusToNewNode = true,
  TreeReadyCallback<Data, IndexedTreeNode<Data>>? onTreeReady,
}) =>
    TreeView._(
      key: key,
      builder: builder,
      tree: tree,
      expansionBehavior: expansionBehavior,
      indentation: indentation,
      expansionIndicatorBuilder:
          expansionIndicatorBuilder ?? _defExpansionIndicatorBuilder,
      scrollController: scrollController,
      onItemTap: onItemTap,
      primary: primary,
      physics: physics,
      padding: padding,
      shrinkWrap: shrinkWrap,
      showRootNode: showRootNode,
      onTreeReady: onTreeReady,
      focusToNewNode: focusToNewNode,
    );