loadData method
Import Data from JSON
Implementation
@override
void loadData(Map<String, dynamic> json) {
_isLoading = true;
if (json.containsKey("id") &&
json.containsKey("content") &&
json.containsKey("nodes")) {
setID(json["id"].toString());
setTitle(json["content"].toString());
setImage(json["image"] ?? "");
setExtended(json["extended"] ?? "");
List<dynamic> list = json["nodes"];
if (list.isNotEmpty) {
for (Map<String, dynamic> j in list) {
if (j.containsKey("id") &&
j.containsKey("content") &&
j.containsKey("nodes")) {
MindMapNode node = MindMapNode();
if (getParentNode() == null) {
addRightItem(node);
} else {
if (getNodeType() == NodeType.left) {
addLeftItem(node);
} else {
addRightItem(node);
}
}
node.loadData(j);
}
}
}
if (json["leftNodes"] != null) {
List<dynamic> leftList = json["leftNodes"];
for (Map<String, dynamic> j in leftList) {
if (j.containsKey("id") &&
j.containsKey("content") &&
j.containsKey("nodes")) {
MindMapNode node = MindMapNode();
addLeftItem(node);
node.loadData(j);
}
}
}
}
if (getNodeType() == NodeType.root) {
switch (getMindMap()?.getMindMapType() ?? MindMapType.leftAndRight) {
case MindMapType.leftAndRight:
if (getLeftItems().isNotEmpty && getRightItems().isEmpty) {
while (getLeftItems().isNotEmpty) {
IMindMapNode node = getLeftItems().first;
removeLeftItem(node);
addRightItem(node);
}
}
if (getLeftItems().isEmpty && getRightItems().isNotEmpty) {
while (getRightItems().length > getLeftItems().length + 1) {
IMindMapNode node = getRightItems().last;
removeRightItem(node);
addLeftItem(node);
}
}
break;
case MindMapType.left:
if (getLeftItems().isNotEmpty && getRightItems().isNotEmpty) {
while (getLeftItems().isNotEmpty) {
IMindMapNode node = getLeftItems().last;
removeLeftItem(node);
addRightItem(node);
}
}
while (getRightItems().isNotEmpty) {
IMindMapNode node = getRightItems().first;
removeRightItem(node);
addLeftItem(node);
}
break;
case MindMapType.right:
if (getLeftItems().isNotEmpty && getRightItems().isNotEmpty) {
while (getLeftItems().isNotEmpty) {
IMindMapNode node = getLeftItems().last;
removeLeftItem(node);
addRightItem(node);
}
} else {
while (getLeftItems().isNotEmpty) {
IMindMapNode node = getLeftItems().first;
removeLeftItem(node);
addRightItem(node);
}
}
break;
}
}
_isLoading = false;
}