build static method

ProjectGraph build(
  1. FFProject project
)

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