dispatchEvent static method

void dispatchEvent(
  1. MethodCall call
)

Implementation

static void dispatchEvent(MethodCall call) {
  try {
    NudgeCallbackData nudgeCallbackData = NudgeCallbackData(
      "nudge_callback",
      type: call.arguments['TYPE'] ?? '',
      action: call.arguments['ACTION'] ?? '',
      // method: call.arguments['METHOD'],
      data: call.arguments['DATA'].runtimeType == String ||
              call.arguments['DATA'] == null
          ? {'data': call.arguments['DATA'] ?? ''}
          : call.arguments['DATA'].cast<String, dynamic>(),
    );

    if (nudgeCallbackData.action == "NUDGE_COMPONENT_CTA_CLICK") {
      NLogger.i("NudgeCallbackManager: CTA Clicked");
      if (nudgeCallbackData.data["TARGET"] != null &&
          nudgeCallbackData.data["CLICK_TYPE"] == "DEEP_LINK") {
        NLogger.i(
          "NudgeCallbackManager: CTA Clicked - TARGET: ${nudgeCallbackData.data["TARGET"]}",
        );
         Future<void>.delayed(const Duration(milliseconds: 500), () {
            // no await → background fire-and-forget
            launchUrl(Uri.parse(nudgeCallbackData.data["TARGET"] ?? ""));
          });
      }
    }

    if (nudgeCallbackData.action == "INTERNAL_ERROR") {
      NLogger.e(
        "Nudge ran into an internal error: ${nudgeCallbackData.data}, disabling nudge.",
      );
      Nudge.getInstance().disableNudge(true);
    }

    for (var listener in _listeners) {
      listener.onEvent(nudgeCallbackData);
    }
  } catch (e) {
    NLogger.e(
      'NudgeNativeCallbackManager: error: $e',
    );
  }
}