updateChildren method
Update opend Node(Deskeletonize and load children skeleton nodes
Implementation
void updateChildren(String key) async {
Node parentNode = _controller.getNode(key)!;
gls.Node storageNode =
await api.storage.getNodeOrTombstone(parentNode.data);
///get Children from the StorageNode
Map<String, gls.Node> children = await storageNode.getChildren();
///Preload ChildrensChildren so the node is extandable
Map<String, List<Node>> childrensChildren =
await getChildrensChildren(children.keys, storageNode.path);
///Map GeigerStorage Node to TreeView Node
List<Node> childrenNodes = children.keys
.map((k) => Node(
key: k,
label: children[k]!.toString(showChildren: true),
data: children[k]!.path,
children: childrensChildren[k]!))
.toList();
///Store Updated Node back in the List
List<Node> updatedNodeList = _controller.updateNode(
key,
parentNode.copyWith(
label: storageNode.toString(showChildren: false),
children: childrenNodes));
setState(() {
_controller = _controller.copyWith(children: updatedNodeList);
});
}