XPath.createBy constructor
XPath.createBy(
{ - required Element element,
- required Element pageElement,
})
Implementation
factory XPath.createBy({
required Element element,
required Element pageElement,
}) {
// int startTime = DateTime.now().millisecondsSinceEpoch;
XPath xpath = XPath._(element);
xpath._targetElement = element;
final highLevelSet = _PathConst.highLevelSet;
LinkedList<_ElementEntry> origalPath = LinkedList();
origalPath.add(_ElementEntry(element));
bool lookforTarget = true;
element.visitAncestorElements((parent) {
if (parent.widget is GestureDetector) {
lookforTarget = false;
}
if (lookforTarget && highLevelSet.contains(parent.widget.runtimeType)) {
xpath._targetElement = parent;
}
origalPath.add(_ElementEntry(parent));
if (pageElement == parent) {
return false;
}
return true;
});
LinkedList<_PathNode> path = xpath._buildFromOrigal(xpath._targetElement, origalPath);
xpath._shortPath(path);
if (path.isNotEmpty) {
path.first.isPage = true;
}
path.forEach((node) => node.computeIndex());
xpath._path = path;
// int endTime = DateTime.now().millisecondsSinceEpoch;
// RangersApplogLogger.getInstance().info('clickInfo - ${endTime - startTime}');
return xpath;
}