handle method

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

Implementation

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

  // var view = ui.PlatformDispatcher.instance.views.first;
  // var devicePixelRatio = view.devicePixelRatio;

  var devicePixelRatio = call.arguments["DPR"];

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

  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');
  }
}