buildTreeFromFlat<T> function
Builds a tree from flat data with parent references.
Implementation
List<NiceTreeGridNode<T>> buildTreeFromFlat<T>({
required List<T> data,
required String Function(T) keyOf,
required String? Function(T) parentKeyOf,
}) {
final map = <String, NiceTreeGridNode<T>>{};
final roots = <NiceTreeGridNode<T>>[];
for (final item in data) {
map[keyOf(item)] = NiceTreeGridNode(key: keyOf(item), data: item);
}
for (final item in data) {
final node = map[keyOf(item)]!;
final parentKey = parentKeyOf(item);
if (parentKey != null && map.containsKey(parentKey)) {
map[parentKey]!.children.add(node);
} else {
roots.add(node);
}
}
return roots;
}