getProperties method

  1. @override
Map<String, dynamic> getProperties({
  1. Element? ancestor,
})
override

Implementation

@override
Map<String, dynamic> getProperties({Element? ancestor}) {
  Map<String, dynamic> properties = {};

  properties[WidgetProperty.top.name] = 0;
  properties[WidgetProperty.left.name] = 0;
  properties[WidgetProperty.width.name] = 1080;
  properties[WidgetProperty.height.name] = 2337;
  properties[WidgetProperty.id.name] = element.hashCode;
  properties[WidgetProperty.className.name] = element.widget.toString();
  properties[WidgetProperty.flutterElement.name] = true;
  properties[WidgetProperty.accessibilityLabel.name] =
      element.findAncestorWidgetOfExactType<Semantics>()?.properties.label ?? '';
  properties[WidgetProperty.accessibilityId.name] =
        element.widget.runtimeType.toString();

  try {
    RenderBox? rbox = element.findRenderObject() as RenderBox?;
    RenderBox? ancestorRbox = ancestor?.findRenderObject() as RenderBox?;

    if (rbox != null)
    {
      var offset = rbox.localToGlobal(Offset.zero, ancestor: ancestorRbox);
      var screenOffset = rbox.localToGlobal(Offset.zero);
      var pbox = rbox.paintBounds;
      properties[WidgetProperty.top.name] = offset.dy.toInt();
      properties[WidgetProperty.left.name] = offset.dx.toInt();
      properties[WidgetProperty.screenY.name] = screenOffset.dy.toInt();
      properties[WidgetProperty.screenX.name] = screenOffset.dx.toInt();
      properties[WidgetProperty.width.name] = pbox.right.toInt();
      properties[WidgetProperty.height.name] = pbox.bottom.toInt();
      properties[WidgetProperty.visible.name] = isWidgetVisible(rbox);
      properties[WidgetProperty.visibility.name] = isWidgetVisible(rbox);
    }
    // var offset = rbox!.localToGlobal(Offset.zero);
    // final size = rbox.paintBounds; //rbox.size;

    // properties[WidgetProperty.originalTop.name] = offset.dy.toInt();
    // properties[WidgetProperty.originalLeft.name] = offset.dx.toInt();
    // properties[WidgetProperty.originalWidth.name] = size.right.toInt();
    // properties[WidgetProperty.originalHeight.name] = size.bottom.toInt();

    // // get device pixel ratio
    // FlutterView view = WidgetsBinding.instance.platformDispatcher.views.first;
    // var devicePixelRatio = view.devicePixelRatio;
    // // here multiple of 2.75 because the ScreenShot size in 2.75 they help to detect element of Hierarchy
    // properties[WidgetProperty.top.name] =
    //     (offset.dy.toInt() * devicePixelRatio);
    // properties[WidgetProperty.left.name] =
    //     (offset.dx.toInt() * devicePixelRatio);
    // properties[WidgetProperty.width.name] =
    //     (size.width.toInt() * devicePixelRatio);
    // properties[WidgetProperty.height.name] =
    //     (size.height.toInt() * devicePixelRatio);
    // properties[WidgetProperty.visible.name] = isWidgetVisible(rbox);
    // properties[WidgetProperty.visibility.name] = isWidgetVisible(rbox);
  } catch (e) {}

  return properties;
}