track method
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");
}