track method

Future<void> track(
  1. String trackingEventName, {
  2. EvaluationContext? context,
  3. TrackingEventDetails? trackingDetails,
})

Compatibility tracking API that can be awaited for transport completion.

Implementation

Future<void> track(
  String trackingEventName, {
  EvaluationContext? context,
  TrackingEventDetails? trackingDetails,
}) async {
  _metrics.trackingEvents++;

  try {
    final effectiveContext = _buildEffectiveContext(context);
    final trackingProvider = provider;
    if (trackingProvider case final ProviderTracking tracking) {
      await tracking.trackEvent(
        trackingEventName,
        evaluationContext: effectiveContext,
        trackingDetails: trackingDetails,
      );
    } else {
      await trackingProvider.track(
        trackingEventName,
        evaluationContext: effectiveContext,
        trackingDetails: trackingDetails,
      );
    }
  } catch (e) {
    _logger.warning('Error sending tracking event "$trackingEventName": $e');
  }
}