buildRelationshipTreeData static method
Implementation
static List<TreeNode> buildRelationshipTreeData(
List<Map<String, dynamic>> data,
) {
Map<int, TreeNode> nodeMap = {};
List<TreeNode> rootNodes = [];
for (var item in data) {
nodeMap.putIfAbsent(
item["id"],
() => TreeNode(
id: item["id"],
title: item["value"],
parent: null,
children: [],
),
);
}
for (var item in data) {
var node = nodeMap[item["id"]];
if (node == null) continue;
if (!nodeMap.containsKey(item["parentId"])) {
rootNodes.add(node);
node.hierarchy = 0;
} else {
var parentNode = nodeMap[item["parentId"]];
if (parentNode != null) {
node.parent = parentNode;
parentNode.children.add(node);
node.hierarchy = parentNode.hierarchy + 1;
}
}
}
return rootNodes;
}