GraphLayoutRequest constructor
GraphLayoutRequest({
- required Iterable<
GraphLayoutNode> nodes, - required Iterable<
GraphLayoutEdge> edges,
Implementation
GraphLayoutRequest({
required Iterable<GraphLayoutNode> nodes,
required Iterable<GraphLayoutEdge> edges,
}) : nodes = List.unmodifiable(nodes),
edges = List.unmodifiable(edges) {
final ids = <String>{};
for (final node in this.nodes) {
if (node.id.isEmpty ||
!ids.add(node.id) ||
!node.size.width.isFinite ||
node.size.width <= 0 ||
!node.size.height.isFinite ||
node.size.height <= 0 ||
(node.pinned && node.position == null) ||
(node.position != null &&
(!node.position!.x.isFinite || !node.position!.y.isFinite))) {
throw ArgumentError('Layout nodes need valid unique geometry.');
}
}
for (final edge in this.edges) {
if (!ids.contains(edge.source) || !ids.contains(edge.target)) {
throw ArgumentError('Layout edges must identify request nodes.');
}
}
}