getBorder method

BoxBorder getBorder()

Implementation

BoxBorder getBorder() {
  if (_border != null) {
    return _border!;
  } else {
    BoxBorder border =
        getMindMap()?.getTheme() != null &&
            getMindMap()?.getTheme()?.getThemeByLevel(getLevel()) != null &&
            getMindMap()?.getTheme()?.getThemeByLevel(getLevel())!["Border"]
                is BoxBorder
        ? getMindMap()?.getTheme()?.getThemeByLevel(getLevel())!["Border"]
              as BoxBorder
        : (getParentNode() != null && getParentNode() is MindMapNode
              ? (getParentNode() as MindMapNode).getBorder()
              : Border.all(
                  color: Colors.black,
                  width: 1.0,
                  style: BorderStyle.solid,
                  strokeAlign: BorderSide.strokeAlignOutside,
                ));

    List<Color> list = getBorderColors();
    if (list.isNotEmpty) {
      int index = 0;
      if (getParentNode() != null) {
        if (getNodeType() == NodeType.right) {
          index = getParentNode()!.getRightItems().indexOf(this);
        } else {
          index =
              getParentNode()!.getRightItems().length +
              getParentNode()!.getLeftItems().indexOf(this);
        }
      }
      Color color = list[index % list.length];
      BorderSide top = BorderSide.none;
      BorderSide left = BorderSide.none;
      BorderSide bottom = BorderSide.none;
      BorderSide right = BorderSide.none;

      if (border.top != BorderSide.none) {
        top = border.top.copyWith(color: color);
      }
      if (border.bottom != BorderSide.none) {
        bottom = border.bottom.copyWith(color: color);
      }
      if (border is Border && border.left != BorderSide.none) {
        left = border.left.copyWith(color: color);
      }
      if (border is Border && border.right != BorderSide.none) {
        right = border.right.copyWith(color: color);
      }
      border = BoxBorder.fromLTRB(
        top: top,
        right: right,
        left: left,
        bottom: bottom,
      );
    }
    return border;
  }
}