logEvent method

Future<void> logEvent({
  1. required String name,
  2. Map<String, Object?>? parameters,
  3. AnalyticsCallOptions? callOptions,
})

Logs a custom Flutter Analytics event with the given name and event parameters.

Implementation

Future<void> logEvent({
  required String name,
  Map<String, Object?>? parameters,
  AnalyticsCallOptions? callOptions,
}) async {
  if (_reservedEventNames.contains(name)) {
    throw ArgumentError.value(
      name,
      'name',
      'Event name is reserved and cannot be used',
    );
  }

  const String kReservedPrefix = 'firebase_';

  if (name.startsWith(kReservedPrefix)) {
    throw ArgumentError.value(
      name,
      'name',
      'Prefix "$kReservedPrefix" is reserved and cannot be used.',
    );
  }

  if (parameters?['items'] is List<AnalyticsEventItem>) {
    // ignore: cast_nullable_to_non_nullable
    parameters!['items'] = (parameters['items'] as List<AnalyticsEventItem>)
        .map((item) => item.asMap())
        .toList();
  }

  await _delegate.logEvent(
    name: name,
    parameters: parameters,
    callOptions: callOptions,
  );
}