selectNodes method

void selectNodes(
  1. List<String> nodeIds, {
  2. bool toggle = false,
})

Selects multiple nodes in the graph.

Automatically clears selections of other element types (connections, annotations).

Example:

// Replace selection with multiple nodes
controller.selectNodes(['node1', 'node2', 'node3']);

// Toggle multiple nodes (for multi-select)
controller.selectNodes(['node4', 'node5'], toggle: true);

Implementation

void selectNodes(List<String> nodeIds, {bool toggle = false}) {
  runInAction(() {
    // Clear other element types' selections
    clearConnectionSelection();
    annotations.clearAnnotationSelection();

    if (toggle) {
      for (final nodeId in nodeIds) {
        final node = _nodes[nodeId];
        if (node != null) {
          if (_selectedNodeIds.contains(nodeId)) {
            _selectedNodeIds.remove(nodeId);
            node.selected.value = false;
          } else {
            _selectedNodeIds.add(nodeId);
            node.selected.value = true;
          }
        }
      }
    } else {
      clearNodeSelection();

      for (final nodeId in nodeIds) {
        _selectedNodeIds.add(nodeId);
        final node = _nodes[nodeId];
        if (node != null) {
          node.selected.value = true;
        }
      }
    }
  });

  if (!canvasFocusNode.hasFocus) {
    canvasFocusNode.requestFocus();
  }
}