didUpdateTree method
void
didUpdateTree(
)
inherited
Implementation
@visibleForTesting
void didUpdateTree() {
final treeDiff = calculateTreeDiff<ITreeNode<Data>>(_tree, widget.tree);
if (treeDiff.isEmpty) return;
for (final update in treeDiff) {
update.when(
add: (node) {
node as Tree;
final parentNode = _tree
.elementAt(node.parent?.path ?? node.root.path) as INodeActions;
parentNode.add(node);
},
insert: (node, pos) {
node as Tree;
final parentNode =
_tree.elementAt(node.parent?.path ?? node.root.path)
as IIndexedNodeActions;
parentNode.insert(pos, node as IndexedNode);
},
remove: (node, pos) {
node as Tree;
final parentNode = _tree
.elementAt(node.parent?.path ?? node.root.path) as INodeActions;
parentNode.remove(node);
},
update: (node) {
node as Tree;
final oldNode = _tree.elementAt(node.path) as Tree;
oldNode.data = node.data;
},
);
}
}