updateChildren method

void updateChildren(
  1. String key
)

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);
  });
}