fatal method

  1. @override
Future<void> fatal(
  1. LogEntry entry
)
override

Marks an error as fatal and records it to Firebase Analytics.

entry - The complete log entry containing fatal error message, level, timestamp, context, stackTrace, and event.

Implementation

@override
Future<void> fatal(LogEntry entry) async {
  try {
    if (shouldLog(event: entry.event)) {
      // Use the unified mergedContext getter with fatal-specific parameters
      final parameters = <String, Object>{
        'param_message': entry.message.toString(),
        'param_error':
            entry.stackTrace?.toString() ?? 'no_exception_provided',
        ...entry.mergedContext.cast<String, Object>(),
      };
      if (entry.event != null && entry.event is FirebaseAnalyticsLogEvent) {
        final analyticsEvent = entry.event as FirebaseAnalyticsLogEvent;
        parameters['param_event_type'] = analyticsEvent.eventName;
      }
      _analytics.logEvent(name: 'fatal_error', parameters: parameters);
    }
  } catch (e, stack) {
    developer.log(
      'Error during Firebase Analytics fatal error handling: $e',
      name: 'FirebaseAnalyticsLogStrategy',
      error: e,
      stackTrace: stack,
    );
  }
}