handle method

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

Implementation

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

  final String label = call.arguments['LABEL'];
  final num screenHeight = call.arguments['SCREEN_HEIGHT'];
  final num screenWidth = call.arguments['SCREEN_WIDTH'];
  final num? statusBarHeight = call.arguments['STATUS_BAR_HEIGHT'];

  NLogger.i('Searching for target with label: $label');
  NLogger.d(
    'Screen height: $screenHeight, Screen width: $screenWidth, status bar height: $statusBarHeight',
  );

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

  final num scaleX = screenWidth / size.width;
  final num scaleY = screenHeight / size.height;

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

  print('Scale X: $scaleX, Scale Y: $scaleY');

  final Map<String, dynamic> targetDetails =
      await NudgeWidgetTracker.nativeFindWidgetPositionByLabel(
    label: label,
    scaleX: scaleX,
    scaleY: scaleY,
    statusBarHeight: 0,
  );

  if (targetDetails['result']) {
    NLogger.i('Target found: $targetDetails');

    final Map<String, dynamic> response = {
      'message_type': 'SEND_TARGET_DETAILS',
      'data': targetDetails,
    };

    try {
      await NudgeCoreV2NativeServices().sendTargetDetails(response);
    } catch (e) {
      NLogger.e('Error sending target details: $e');
      return {'success': false};
    }

    return {'success': true};
  } else {
    NLogger.i(
      'Target not found, please ensure that the widget exists on the screen',
    );

    return {'success': false};
  }
}