logEvent static method

dynamic logEvent(
  1. String event, {
  2. bool isRequest = false,
  3. bool success = false,
  4. bool failure = false,
  5. String endPoint = "",
  6. dynamic header,
  7. dynamic request,
  8. dynamic queryParameters,
  9. String? requestDate,
  10. dynamic response,
  11. String? responseDate,
  12. String? errorDescription,
  13. String? exceptionParamName,
  14. bool isCameraRequired = false,
  15. String? cameraPermission,
  16. bool isLocationRequired = false,
  17. String? locationPermission,
  18. String? preciseLocationPermission,
  19. String? microphonePermission,
  20. bool isNotificationRequired = false,
  21. String? notificationPermission,
  22. String? status,
  23. DioException? error,
  24. String? screenName,
  25. String? buttonName,
  26. String? transactionId,
})

Implementation

static logEvent(
  String event, {
  bool isRequest = false,
  bool success = false,
  bool failure = false,
  String endPoint = "",
  dynamic header,
  dynamic request,
  dynamic queryParameters,
  String? requestDate,
  dynamic response,
  String? responseDate,
  String? errorDescription,
  String? exceptionParamName,
  bool isCameraRequired = false,
  String? cameraPermission,
  bool isLocationRequired = false,
  String? locationPermission,
  String? preciseLocationPermission,
  String? microphonePermission,
  bool isNotificationRequired = false,
  String? notificationPermission,
  String? status,
  DioException? error,
  String? screenName,
  String? buttonName,
  String? transactionId,
}) async {
  try {
    final storage = GetStorage();
    String customStackTrace = "";
    if (failure) {
      FirebaseCrashlytics.instance.setCustomKey(
        "endPoint",
        endPoint,
      );
      FirebaseCrashlytics.instance.setCustomKey(
        "screenName",
        screenName ?? "N?A",
      );
      FirebaseCrashlytics.instance.setCustomKey(
        "buttonName",
        buttonName ?? "",
      );
      FirebaseCrashlytics.instance.setCustomKey(
        "userName",
        storage.read("FULL_NAME") ?? "",
      );
      FirebaseCrashlytics.instance.setCustomKey(
        "userId",
        storage.read("USER_ID") ?? "",
      );
      FirebaseCrashlytics.instance.setCustomKey(
        "env",
        getEnvironment(ApiConstant.baseUrl),
      );
      FirebaseCrashlytics.instance.setCustomKey(
        "x-trace-id",
        UDID.getTraceId(),
      );
      customStackTrace = "${screenName ?? ""} ${buttonName ?? ""} $endPoint";
    }
    await FirebaseCrashlytics.instance
        .recordError(
      failure
          ? error?.message ?? "$event - $endPoint"
          : "$event - $endPoint - ${storage.read("USER_ID") ?? ""} - ${storage.read("FULL_NAME") ?? ""}",
      failure
          ? StackTrace.fromString(customStackTrace)
          : StackTrace.fromString("$event - $endPoint"),
      reason: failure ? error?.message : "$event - $endPoint",
      information: [
        "userId: ${storage.read("USER_ID") ?? ""}",
        "userName: ${storage.read("FULL_NAME") ?? ""}",
        "mobileNo: ${storage.read("MOBILE_NO") ?? ""}",
        "partnerId: ${storage.read("PARTNER_ID_LOGIN") ?? ""}",
        "designation: ${storage.read("DESIGNATION_ID") ?? ""}",
        "endPointUrl: $endPoint",
        "requestDateAndTime: ${requestDate ?? ""}",
        "response: ${failure ? response : ""}",
        "responseDateAndTime: ${responseDate ?? ""}",
        "exceptionParamName: ${failure ? error?.type : ""}",
        "status: ${isRequest ? "REQUEST" : success ? "SUCCESS" : "FAILURE"}",
        "eventName: $event",
        "screenName: $screenName",
        "buttonName: $buttonName",
        "transactionId: $transactionId",
        "x-request-txn-id : ${UDID.getUDID()}",
        "x-trace-id : ${UDID.getTraceId()}"
      ],
      fatal: true,
    )
        .then((_) {
      debugPrint("success on logging the then event");
    });
    debugPrint("success on logging the event");
  } catch (e) {
    debugPrint("error on logging the event $e");
  }
}