loadData method

  1. @override
void loadData(
  1. Map<String, dynamic> json
)
override

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