didUpdateTree method

  1. @visibleForTesting
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;
      },
    );
  }
}