handle method

  1. @override
Future handle(
  1. MethodCall call
)
override

Implementation

@override
Future<dynamic> handle(MethodCall call) async {
  NLogger.i('Capturing all components');

  final num scaleX = call.arguments['SCALE_X'];
  final num scaleY = call.arguments['SCALE_Y'];

  Size size = MediaQuery.of(Nudge.nudgeNavigatorKey.currentContext!).size;

  // final num scaleX = 720 / size.width;
  // final num scaleY = 1600 / size.height;

  final List<Map<String, dynamic>> components =
      NudgeWidgetTracker.getAllWidgetDetails(
    2.0,
    2.0,
  );

  if (components.isNotEmpty) {
    NLogger.i(
      'Components found: ${components.length}, labels: ${components.map((e) => e['name'])}',
    );

    ScreenshotDetails? screenshotDetails =
        await ScreenshotUtil.captureAndSaveScreenshot(
      Nudge.screenshotKey,
    );

    Size screenshotSize = screenshotDetails?.screenshotSize ?? Size.zero;

    final Map<String, dynamic> response = {
      'message_type': 'SEND_ALL_COMPONENTS',
      'data': {
        'components': components,
        'screenshot_path': screenshotDetails?.filePath,
        'ss_height': screenshotSize.height,
        'ss_width': screenshotSize.width,
      },
    };

    NLogger.i('Sending all components: $response');

    try {
      await NudgeCoreV2NativeServices().sendAllComponents(response);
    } catch (e) {
      NLogger.e('Error sending component details: $e');
    }
  } else {
    NLogger.i(
      'No components found, please ensure that the widgets exist on the screen',
    );
  }
}