recurseKey static method

List<Map<String, dynamic>> recurseKey(
  1. BuildContext element,
  2. double pixRatio,
  3. int screenWidth,
  4. int screenHeight,
)

Implementation

static List<Map<String, dynamic>> recurseKey(BuildContext element,
    double pixRatio, int screenWidth, int screenHeight) {
  List<Map<String, dynamic>> list = [];
  try {
    plotlineDebugLog("recurseKey called with pixRatio: $pixRatio, screenWidth: $screenWidth, screenHeight: $screenHeight");
    element.visitChildElements((element) {
      try {
        String? key = extractKeyValue(element.widget.key);
        plotlineDebugLog("Visited Raw Element: $key, ${element.widget.runtimeType}");
        if (key != null && key.contains("<'") && key.contains("'>") && key.startsWith("[<'") && visibilityMap[key] == 100.0) {
          plotlineDebugLog("Visited Element: $key");
          RenderBox box = element.findRenderObject() as RenderBox;
          Offset position = box.localToGlobal(Offset.zero);
          if (isWithinBounds(
              element, position, pixRatio, screenWidth, screenHeight)) {
            plotlineDebugLog("Element within Bounds: $key");
            Map<String, dynamic> newPosition = {};
            Map<String, dynamic> elementObj = {};
            newPosition['x'] = ((position.dx * pixRatio) + 0.6).round();
            newPosition['y'] = ((position.dy * pixRatio) + 0.6).round();
            newPosition['width'] =
                ((element.size?.width ?? 0) * pixRatio).round();
            newPosition['height'] =
                ((element.size?.height ?? 0) * pixRatio).round();
            elementObj['position'] = newPosition;

            var parentElement = element.findAncestorWidgetOfExactType<PView>();
            if (parentElement != null) {
              if (parentElement.isWidget) {
                elementObj['clientElementId'] = key.substring(key.indexOf("'") + 1, key.lastIndexOf("'"));
                elementObj['isWidget'] = true;
              } else {
                elementObj['clientElementId'] = key;
                elementObj['isWidget'] = false;
              }
              list.add(elementObj);
            }
          }
        }
        list.addAll(recurseKey(element, pixRatio, screenWidth, screenHeight));
      } catch (e) {
        debugPrint("Error in vCElements: $e");
      }
    });
  } catch (e) {
    debugPrint("Error in rKey: $e");
  }
  return list;
}