NodeInstance.fromJson constructor
NodeInstance.fromJson(})
Implementation
factory NodeInstance.fromJson(
Map<String, dynamic> json, {
required Map<String, NodePrototype> nodePrototypes,
required Map<String, DataHandler> dataHandlers,
}) {
if (!nodePrototypes.containsKey(json['idName'].toString())) {
throw Exception('Node prototype not found');
}
final prototype = nodePrototypes[json['idName'].toString()]!;
final portPrototypes = Map.fromEntries(
prototype.ports.map(
(prototype) => MapEntry(prototype.idName, prototype),
),
);
json['ports'] ??= <String, dynamic>{};
final ports = (_fixMap(json['ports'])).map(
(id, portJson) {
return MapEntry(
id,
PortInstance.fromJson(portJson, portPrototypes),
);
},
);
final fieldPrototypes = Map.fromEntries(
prototype.fields.map(
(prototype) => MapEntry(prototype.idName, prototype),
),
);
json['fields'] ??= <String, dynamic>{};
final fields = (_fixMap(json['fields'])).map(
(id, fieldJson) {
return MapEntry(
id,
FieldInstance.fromJson(fieldJson, fieldPrototypes, dataHandlers),
);
},
);
final instance = NodeInstance(
id: json['id'],
prototype: prototype,
ports: ports,
fields: fields,
state: NodeState(isCollapsed: json['state']['isCollapsed']),
offset:
Offset(json['offset'][0].toDouble(), json['offset'][1].toDouble()),
);
return instance;
}