Skip to content

Commit eff6709

Browse files
committed
Separate out the NodeWidget from this package
1 parent f9a7d67 commit eff6709

8 files changed

+19
-140
lines changed

Diff for: .gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
.dart_tool/
22
example/.dart_tool/
33
example/build/
4+
example/.flutter-plugins-dependencies
5+
example/.flutter-plugins

Diff for: example/.flutter-plugins

-8
This file was deleted.

Diff for: example/.flutter-plugins-dependencies

-1
This file was deleted.

Diff for: example/lib/trees/tree_from_json.dart

+7
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,13 @@ class _TreeFromJsonState extends State<TreeFromJson> {
7070
return TreeView(
7171
treeController: _treeController,
7272
nodes: toTreeNodes(parsedJson),
73+
nodeBuilder: (context, flattenedNode) => ListTile(
74+
title: Text(flattenedNode.node.name),
75+
onTap: () {
76+
_treeController.toggleNodeExpanded(
77+
flattenedNode.node.key!, flattenedNode.node.name);
78+
},
79+
),
7380
);
7481
} on FormatException catch (e) {
7582
return Text(e.message);

Diff for: example/pubspec.lock

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ packages:
3333
path: ".."
3434
relative: true
3535
source: path
36-
version: "2.0.0"
36+
version: "2.1.0"
3737
material_color_utilities:
3838
dependency: transitive
3939
description:

Diff for: lib/flutterflow_tree_view.dart

-1
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,4 @@ export 'src/primitives/tree_controller.dart';
88
export 'src/primitives/tree_node.dart';
99
export 'src/tree_view.dart';
1010
export 'src/search_tree_nodes.dart';
11-
export 'src/node_widget.dart';
1211
export 'src/node_style.dart';

Diff for: lib/src/node_widget.dart

-113
This file was deleted.

Diff for: lib/src/tree_view.dart

+9-16
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import 'package:flutter/material.dart';
22

33
import 'copy_tree_nodes.dart';
4-
import 'node_style.dart';
5-
import 'node_widget.dart';
64
import 'primitives/tree_controller.dart';
75
import 'primitives/tree_node.dart';
86

@@ -12,20 +10,21 @@ class TreeView extends StatelessWidget {
1210
///
1311
/// - [nodes] parameter is a required list of [TreeNode] objects that represent the nodes in the tree.
1412
/// - [treeController] parameter is an optional [TreeController] object that controls the behavior of the tree view.
15-
/// - [style] parameter is an optional [TreeViewStyle] object that defines the style of the tree view.
13+
/// - [nodeBuilder] parameter is a required function that builds a widget for each tree node.
1614
TreeView({
1715
super.key,
1816
required List<TreeNode> nodes,
1917
required this.treeController,
20-
this.style,
18+
required this.nodeBuilder,
2119
this.listPadding,
2220
}) : nodes = copyTreeNodes(nodes);
2321

2422
/// List of root level tree nodes.
2523
final List<TreeNode> nodes;
2624

27-
/// The style to be applied to the tree view.
28-
final NodeStyle? style;
25+
/// Builder function to create a widget for each tree node.
26+
final Widget Function(BuildContext context, FlattenTreeNode flattenedNode)
27+
nodeBuilder;
2928

3029
/// Tree controller to manage the tree state.
3130
final TreeController treeController;
@@ -35,21 +34,15 @@ class TreeView extends StatelessWidget {
3534

3635
@override
3736
Widget build(BuildContext context) {
38-
final nodeStyle = style ?? NodeStyle(arrowIconSize: 16, levelIndent: 16);
39-
final flattenedTree = FlattenTreeNode.getFlattenedTree(
37+
final flattenedTreeNode = FlattenTreeNode.getFlattenedTree(
4038
nodes,
4139
treeController,
4240
);
4341
return ListView.builder(
4442
padding: listPadding ?? EdgeInsets.zero,
45-
itemCount: flattenedTree.length,
46-
itemBuilder: (context, index) => NodeWidget(
47-
key: flattenedTree[index].key,
48-
treeNode: flattenedTree[index].node,
49-
state: treeController,
50-
level: flattenedTree[index].level,
51-
style: nodeStyle,
52-
),
43+
itemCount: flattenedTreeNode.length,
44+
itemBuilder: (context, index) =>
45+
nodeBuilder(context, flattenedTreeNode[index]),
5346
);
5447
}
5548
}

0 commit comments

Comments
 (0)