Flutter docs
Default skin

Tree

Multiple-level structure list.

When to use

Almost anything can be represented in a tree structure. Examples include directories, organization hierarchies, biological classifications, countries, etc. The Tree component is a way of representing the hierarchical relationship between these things. You can also expand, collapse, and select a treeNode within a Tree.

Examples

Basic

The most basic usage, tell you how to use checkable, selectable, disabled, defaultExpandKeys, and etc.

draggable

Drag treeNode to insert after the other treeNode or insert into the other parent TreeNode.

Searchable

Searchable Tree.

Customize Icon

You can customize icons for different nodes.

Customize collapse/expand icon

customize collapse/expand icon of tree node

Scroll to nested node

In controlled mode, use Tree.useTree to get the node path and update expandedKeys before scrolling to the target node.

Custom semantic dom styling

You can customize the semantic dom style of Tree by passing objects/functions through classNames and styles.

Controlled Tree

Controlled mode lets parent nodes reflect the status of child nodes more intelligently.

load data asynchronously

To load data asynchronously when click to expand a treeNode.

Tree with line

Tree with connected line between nodes, turn on by showLine, customize the preset icon by switcherIcon.

directory

Built-in directory tree. multiple support ctrl(Windows) / command(Mac) selection.

Virtual scroll

Use virtual list through height prop.

Block Node

API

Tree and Tree.DirectoryTree are exported from @ceebee/ui/client.

Tree props

PropertyDescriptionTypeDefaultVersion
allowDropWhether to allow dropping on the node({ dropNode, dropPosition }) => boolean-—
autoExpandParentWhether to automatically expand a parent treeNodebooleanfalse—
blockNodeWhether treeNode fill remaining horizontal spacebooleanfalse—
checkableAdd a Checkbox before the treeNodesbooleanfalse—
checkedKeys(Controlled) Specifies the keys of the checked treeNodes (PS: When this specifies the key of a treeNode which is also a parent treeNode, all the children treeNodes of will be checked; and vice versa, when it specifies the key of a treeNode which is a child treeNode, its parent treeNode will also be checked. When checkable and checkStrictly is true, its object has checked and halfChecked property. Regardless of whether the child or parent treeNode is checked, they won't impact each otherstring\[] | {checked: string\[], halfChecked: string\[]}\[]—
checkStrictlyCheck treeNode precisely; parent treeNode and children treeNodes are not associatedbooleanfalse—
classNamesCustomize class for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-—
defaultCheckedKeysSpecifies the keys of the default checked treeNodesstring\[]\[]—
defaultExpandAllWhether to expand all treeNodes by defaultbooleanfalse—
defaultExpandedKeysSpecify the keys of the default expanded treeNodesstring\[]\[]—
defaultExpandParentIf auto expand parent treeNodes when initbooleantrue—
defaultSelectedKeysSpecifies the keys of the default selected treeNodesstring\[]\[]—
disabledWhether the tree is disabledbooleanfalse—
draggableSpecifies whether this Tree or the node is draggable. Use icon: false to disable drag handler iconboolean | ((node: DataNode) => boolean) | { icon?: React.ReactNode | false, nodeDraggable?: (node: DataNode) => boolean }falseconfig: 4.17.0
expandedKeys(Controlled) Specifies the keys of the expanded treeNodesstring\[]\[]—
fieldNamesCustomize node title, key, children field nameobject{ title: title, key: key, children: children }4.17.0
filterTreeNodeDefines a function to filter (highlight) treeNodes. When the function returns true, the corresponding treeNode will be highlightedfunction(node)-—
heightConfig virtual scroll height. Will not support horizontal scroll when enablednumber-—
iconInsert a custom icon before the title. Need to set showIcon to trueReactNode | (props) => ReactNode-—
loadDataLoad data asynchronouslyfunction(node)-—
loadedKeys(Controlled) Set loaded tree nodes. Need to work with loadDatastring\[]\[]—
motionCustom motion config for the treeCSSMotionProps-—
multipleAllows selecting multiple treeNodesbooleanfalse—
rootStyleStyle on the root element, please use styles.root insteadCSSProperties-4.20.0
selectableWhether it can be selectedbooleantrue—
selectedKeys(Controlled) Specifies the keys of the selected treeNodes, multiple selection needs to set multiple to truestring\[]-—
showIconControls whether to display the icon node (no default style)booleanfalse—
showLineShows a connecting lineboolean | {showLeafIcon: ReactNode | ((props: AntTreeNodeProps) => ReactNode)}false—
stylesCustomize inline style for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-—
switcherIconCustomize expand/collapse icons for tree nodes (Will not rotate automatically in showLine mode)ReactNode | ((props: AntTreeNodeProps) => ReactNode)-renderProps: 4.20.0
switcherLoadingIconCustomize loading icons for tree nodesReactNode-5.20.0
titleRenderCustomize tree node title render(nodeData) => ReactNode-4.5.0
treeDataThe treeNodes data Array, if set it then you need not to construct children TreeNode. (key should be unique across the whole array)array&lt;{ key, title, children, \[disabled, selectable] }>-—
virtualDisable virtual scroll when set to falsebooleantrue4.1.0
onCheckCallback function for when the onCheck event occursfunction(checkedKeys, e:{checked: boolean, checkedNodes, node, event, halfCheckedKeys})-—
onDoubleClickCallback function for when the user double clicks a treeNodefunction(event, node)-—
onDragEndCallback function for when the onDragEnd event occursfunction({event, node})-—
onDragEnterCallback function for when the onDragEnter event occursfunction({event, node, expandedKeys})-—
onDragLeaveCallback function for when the onDragLeave event occursfunction({event, node})-—
onDragOverCallback function for when the onDragOver event occursfunction({event, node})-—
onDragStartCallback function for when the onDragStart event occursfunction({event, node})-—
onDropCallback function for when the onDrop event occursfunction({event, node, dragNode, dragNodesKeys})-—
onExpandCallback function for when a treeNode is expanded or collapsedfunction(expandedKeys, {expanded: boolean, node})-—
onLoadCallback function for when a treeNode is loadedfunction(loadedKeys, {event, node})-—
onRightClickCallback function for when the user right clicks a treeNodefunction({event, node})-—
onSelectCallback function for when the user clicks a treeNodefunction(selectedKeys, e:{selected: boolean, selectedNodes, node, event})-—

TreeNode props

PropertyDescriptionTypeDefaultVersion
checkableWhen Tree is checkable, set TreeNode display Checkbox or notboolean-—
disableCheckboxDisables the checkbox of the treeNodebooleanfalse—
disabledDisables the treeNodebooleanfalse—
iconCustomize icon. When you pass component, whose render will receive full TreeNode props as component propsReactNode | (props) => ReactNode-—
isLeafDetermines if this is a leaf node (effective when loadData is specified). false will force the TreeNode to be treated as a parent nodeboolean-—
keyUsed with (default)ExpandedKeys / (default)CheckedKeys / (default)SelectedKeys. P.S.: It must be unique in all of treeNodes of the treestring(internal calculated position of treeNode)—
selectableSet whether the treeNode can be selectedbooleantrue—
titleTitleReactNode---—

DirectoryTree props

PropertyDescriptionTypeDefaultVersion
expandActionDirectory opening logic, options: false | click | doubleClickstring | booleanclick—