track method

Future<void> track({
  1. required String event,
  2. Map<String, dynamic>? properties,
})

Tracks an event with optional properties.

Implementation

Future<void> track({
  required String event,
  Map<String, dynamic>? properties,
}) async {
  // NudgeCoreV2NativeServices()
  //     .coreCallbackChannel
  //     .invokeMethod("nudge_ping_1");

  if (event.isEmpty) {
    NLogger.e("Track event failed: Event name cannot be null or empty.");
    return;
  }

  // clean properties to ensure no null values
  properties ??= {};

  properties.removeWhere(
    (key, value) {
      if (value == null ||
          (value is String && value.isEmpty) ||
          (value is Map) ||
          (value is List)) {
        NLogger.e("Removing null or invalid property: $key");
        return true;
      }

      return false;
    },
  );

  NLogger.i("Tracking Event: $event, Properties: ${jsonEncode(properties)}");

  await _nudgeCoreV2NativeServices.invokeNativeMethod('nudge_track', {
    'event': event,
    'properties': properties,
  });

  NLogger.i("Track Event Completed: $event");
}