captureFingerPrint method

Future<String?> captureFingerPrint({
  1. required String pidOptions,
})

Implementation

Future<String?> captureFingerPrint({required String pidOptions}) async {
  try {
    String? result = await MantraBiometricPlatform.instance.captureFingerPrint(pidOptions);
    if (result != null && result.isNotEmpty) {
      final xmlDocument = XmlDocument.parse(result);
      XmlElement? errorField = xmlDocument.findElements("PidData").firstOrNull?.findElements("Resp").firstOrNull;
      if (errorField != null) {
        String? errorCode = errorField.attributes.firstWhereOrNull((element) => element.name.toString() == "errCode")?.value ?? "";
        String? errorInfo = errorField.attributes.firstWhereOrNull((element) => element.name.toString() == "errInfo")?.value ?? "";
        if (errorCode == "0") {
          return result;
        } else {
          throw RDException(errorCode, "Something Went Wrong", errorInfo);
        }
      }
      throw RDException("503", "Something Went Wrong", "Unable to Prarse Result");
    } else {
      throw RDException("503", "Something Went Wrong", "Result got null");
    }
  } on PlatformException catch (e) {
    String? code = e.code;
    String? message = e.message;
    String? details = e.details;
    switch (e.code) {
      case "ClientNotFound":
        throw RDClientNotFound(code, message, details);
      default:
        rethrow;
    }
  } catch (e) {
    rethrow;
  }
}