getAnchorView method

Element? getAnchorView(
  1. String eid
)

Implementation

Element? getAnchorView(String eid) {
  if(isAnchorSmartechView(eid)){
    anchorElement = null;
    List<String> path = eid.split(widgetSeparator);
    findElementByUniqueKey(element, path[1].split(widgetIndexSeparator)[0].replaceAll(smartechWidgetIdentifier, ""));
    if(anchorElement == null){
      return anchorElement;
    }
    Attr anchorElementAttr = getAttributesOfElement(anchorElement!);
    Element? traverse = anchorElement;
    for(int i=2;i<path.length;i++){
      List<String> pathVariables = path[i].split(widgetIndexSeparator);
      String ix = pathVariables[1].split(indexSeparator)[1];
      traverse = traverse?.children[int.parse(ix)];
      if(!compareAttributes(getAttributesOfElement(traverse!), anchorElementAttr)){
        Logger.d("SmartechView not selected");
        return null;
      }
    }
    return anchorElement;
  }
  Logger.d("getAnchorView EID : $eid");
  List<String> path = eid.split(widgetSeparator);
  Element rootElement = element;

  for (int i = 1; i < path.length; i++) {
    List<String> pathVariables = path[i].split(widgetIndexSeparator);
    String ix = pathVariables[1].split(indexSeparator)[1];

    List<Element> children = rootElement.children;

    if (pathVariables.length == 3) {
      String key = pathVariables[2].split(indexSeparator)[1];
      for (int i = 0; i < children.length; i++) {
        if (key == getKeyString(children[i].widget.key)) {
          rootElement = children[i];
          break;
        }
      }
    } else {
      if (children.length > int.parse(ix)) {
        rootElement = children[int.parse(ix)];
      } else {
        return null;
      }
    }
    if (rootElement.widget.identity() == pathVariables[0] &&
        checkIfVisibilityWidgetIsVisible(rootElement)) {
      Logger.d("element name : ${rootElement.widget.identity()}, EID element name : "
          "${pathVariables[0]}, No Of Children : ${rootElement.children.length}, ix : $ix");
    } else {
      Logger.i("Widget Mismatch, Anchor View not present");
      Logger.i("element name : ${rootElement.widget.identity()} "
          "element name in EID ${pathVariables[0]} No Of Children : "
          "${rootElement.children.length} ix : $ix");
      return null;
    }
  }
  return rootElement;
}