trackError method
Implementation
Future<void> trackError(
Object error,
String? componentName,
Map<String, dynamic>? additionalInfo,
) async {
final message = error is Exception ? error.toString() : error.toString();
final stack = error is Error ? (error.stackTrace?.toString()) : null;
if (!_isInitialized) {
final payload = LogPayload(
orgId: 'UNINITALIZED',
eventData: ErrorEvent(
message: message,
stack: stack,
componentName: componentName,
additionalInfo: {...?additionalInfo, 'preInitError': true, 'timestamp': DateTime.now().millisecondsSinceEpoch},
timestamp: DateTime.now().millisecondsSinceEpoch,
),
metadata: getSystemInfo({'os': defaultTargetPlatform.name, 'browser': 'Flutter'}),
eventType: EventType.error,
userId: _userId,
);
try {
await sendLog(payload);
} catch (e) {
_preInitQueue.add({'error': error, 'componentName': componentName, 'additionalInfo': additionalInfo});
logWarn('Error tracked before initialization, queuing:', error);
}
return;
}
final eventData = ErrorEvent(
message: message,
stack: stack,
componentName: componentName,
additionalInfo: {...?additionalInfo, 'timestamp': DateTime.now().millisecondsSinceEpoch},
timestamp: DateTime.now().millisecondsSinceEpoch,
);
final payload = LogPayload(
orgId: _apiKey.isEmpty ? 'UNINITALIZED' : _apiKey,
eventData: eventData,
metadata: getSystemInfo({'os': defaultTargetPlatform.name, 'browser': 'Flutter'}),
eventType: EventType.error,
userId: _userId,
);
await sendLog(payload);
}