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