flutter_tree

Creator: coderz1093

Last updated:

Add to Cart

Description:

flutter tree

Flutter Tree #


Version1
Online Example
Install #
dependencies:
flutter_tree: ^2.0.0
copied to clipboard
Uasge #
First Step #
/// Your server data
final serverData = [
{
"checked": true,
"children": [
{
"checked": true,
"show": false,
"children": [],
"id": 11,
"pid": 1,
"text": "Child title 11",
},
],
"id": 1,
"pid": 0,
"show": false,
"text": "Parent title 1",
},
{
"checked": true,
"show": false,
"children": [],
"id": 2,
"pid": 0,
"text": "Parent title 2",
},
{
"checked": true,
"children": [],
"id": 3,
"pid": 0,
"show": false,
"text": "Parent title 3",
},
];

/// Map server data to tree node data
TreeNodeData mapServerDataToTreeData(Map data) {
return TreeNodeData(
extra: data,
title: data['text'],
expaned: data['show'],
checked: data['checked'],
children:
List.from(data['children'].map((x) => mapServerDataToTreeData(x))),
);
}

/// Generate tree data
List<TreeNodeData> treeData = List.generate(
serverData.length,
(index) => mapServerDataToTreeData(serverData[index]),
);
copied to clipboard
Basic #
TreeView(data: treeData)
copied to clipboard

Show Filter #
TreeView(
data: treeData,
showFilter: true,
),
copied to clipboard

Checked #
TreeView(
data: treeData,
showCheckBox: true,
),
copied to clipboard

Show Actions #
/// Make sure pass `append` function.

TreeView(
data: treeData,
showActions: true,
showCheckBox: true,
append: (parent) {
print(parent.extra);
return TreeNodeData(
title: 'Appended',
expaned: true,
checked: true,
children: [],
);
},
),
copied to clipboard

Bind Events #
TreeView(
data: treeData,
showActions: true,
showCheckBox: true,
append: (parent) {
return TreeNodeData(
title: 'Appended',
expaned: true,
checked: true,
children: [],
);
},
onTap: (node) {
print(node.extra);
},
onCheck: (checked, node) {
print(checked);
print(node.extra);
},
onCollapse: (node) {
print(node.extra);
},
onExpand: (node) {
print(node.extra);
},
onAppend: (node, parent) {
print(node.extra);
print(parent.extra);
},
onRemove: (node, parent) {
print(node.extra);
print(parent.extra);
},
),
copied to clipboard
Lazy load #
/// Create your load function, return list of TreeNodeData

Future<List<TreeNodeData>> _load(TreeNodeData parent) async {
await Future.delayed(const Duration(seconds: 1));
final data = [
TreeNodeData(
title: 'load1',
expaned: false,
checked: true,
children: [],
extra: null,
),
TreeNodeData(
title: 'load2',
expaned: false,
checked: false,
children: [],
extra: null,
),
];

return data;
}

TreeView(
data: treeData,
lazy: true,
load: _load,
onLoad: (node) {
print('onLoad');
print(node.extra);
},
),

copied to clipboard

All Props #



property
type
default
description
required




data
List<TreeNodeData>
[]
Tree data
true


lazy
bool
false
Lazy load node data
false


icon
Widget
Icons.expand_more
Tree icon
false


offsetLeft
double
24.0
Item padding left
false


showFilter
bool
false
Show tree filter
false


showActions
bool
false
Show node actions
false


showCheckBox
bool
false
Show node checkbox
false


onTap
Function(TreeNodeData)
null
Node tap callback
false


onExpand
Function(TreeNodeData)
null
Node expaned callback
false


onLoad
Function(TreeNodeData)
null
Node lazy load callback
false


onCollapse
Function(TreeNodeData)
null
Node collapse callback
false


onCheck
Function(bool, TreeNodeData)
null
Node check callback
false


onAppend
Function(TreeNodeData, TreeNodeData)
null
Node append callback
false


onRemove
Function(TreeNodeData, TreeNodeData)
null
Node remove callback
false


append
Function(TreeNodeData)
null
Append node data function
false


load
Future<List<TreeNodeData>> Function(TreeNodeData)
null
Load node data function
false



TODO #

❌ Draggable tree
❌ Custom filter function

Contribute #

Fork it (https://github.com/xrr2016/flutter_tree.git)
Create your feature branch (git checkout -b feature/foo)
Commit your changes (git commit -am 'Add some foo')
Push to the branch (git push origin feature/foo)
Create a new Pull Request

License #
MIT
Stargazers over time #

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.