report method
Implementation
Future<Exception?> report({Object? err, StackTrace? trace}) async {
if (disabled) {
return null;
}
if (err == null) {
return Exception('no error to report');
}
String? errorMessage;
StackTrace? stackTrace;
if (err is String) {
errorMessage = err;
stackTrace = trace ?? StackTrace.current;
} else if (err is FlutterErrorDetails) {
errorMessage = err.exception.toString();
stackTrace = err.stack;
} else if (err is Exception) {
errorMessage = err.toString();
stackTrace = trace ?? StackTrace.current;
} else if (err is Error) {
errorMessage = err.toString();
stackTrace = err.stackTrace;
}
var reportUrl =
targetUrl ?? '$baseAPIUrl$projectId/events:report?key=$apiKey';
var customFunc = customReportingFunction;
Payload payload = Payload(
serviceContext: serviceContext,
context: ErrorContext(
user: context?.user ?? "",
),
);
final message =
await resolveError(errorMessage: errorMessage, stackTrace: stackTrace);
payload.message = message;
if (customFunc != null) {
return customFunc(payload);
}
return sendErrorPayload(reportUrl, payload);
}