trackEvent method

Future<void> trackEvent({
  1. required int eventType,
  2. Map<String, dynamic>? data,
})

Track a telemetry event (via analytics event type)

Implementation

Future<void> trackEvent({
  required int eventType,
  Map<String, dynamic>? data,
}) async {
  if (!_isInitialized || _managerPtr == null) return;

  try {
    final lib = PlatformLoader.loadCommons();
    final trackAnalytics = lib.lookupFunction<
            Int32 Function(
                Pointer<Void>, Int32, Pointer<RacAnalyticsEventDataStruct>),
            int Function(
                Pointer<Void>, int, Pointer<RacAnalyticsEventDataStruct>)>(
        'rac_telemetry_manager_track_analytics');

    // Build event data struct
    final eventData = calloc<RacAnalyticsEventDataStruct>();
    _populateEventData(eventData, data);

    try {
      final result = trackAnalytics(_managerPtr!, eventType, eventData);
      if (result != RacResultCode.success) {
        _logger.debug('Track event failed', metadata: {'code': result});
      }
    } finally {
      _freeEventData(eventData);
      calloc.free(eventData);
    }
  } catch (e) {
    _logger.debug('trackEvent error: $e');
  }
}