build static method
Build a complete dependency graph from a project.
Implementation
static ProjectGraph build(FFProject project) {
final graph = ProjectGraph();
// Add global file nodes
_addGlobalNodes(graph);
// Build map key → widget class key lookup for display name resolution.
final mapKeyByNodeKey = <String, String>{};
for (final entry in project.widgetClasses.entries) {
mapKeyByNodeKey[entry.value.node.key] = entry.key;
}
// Add page nodes (uses extension method from ff_protos)
for (final page in project.getPages()) {
_addWidgetClassNode(
graph,
page,
DependencyNodeType.page,
mapKey: mapKeyByNodeKey[page.node.key],
);
}
// Add component nodes (uses extension method from ff_protos)
for (final component in project.getComponents()) {
_addWidgetClassNode(
graph,
component,
DependencyNodeType.component,
mapKey: mapKeyByNodeKey[component.node.key],
);
}
// Add declared library dependency nodes
_addLibraryDependencyNodes(graph, project);
// Build dependency edges
_buildDependencyEdges(graph, project);
return graph;
}