apply method

Future<void> apply()

Apply all configurations to the Document Reader SDK

Implementation

Future<void> apply() async {
  final customization = _documentReader.customization;
  final functionality = _documentReader.functionality;
  final processParams = _documentReader.processParams;

  // Apply color theme
  if (_colorTheme != null) {
    // customization.colors = CustomizationColors(

    // );
  }

  // Apply multipage configuration
  if (_multipage != null) {
    customization.multipageButtonText = _multipage!.buttonText;

    if (_multipage!.timeout != null) {
      processParams.timeout = _multipage!.timeout!;
    }
    if (_multipage!.timeoutFromFirstDetect != null) {
      processParams.timeoutFromFirstDetect =
          _multipage!.timeoutFromFirstDetect!;
    }
  }

  // Apply liveness configuration
  if (_liveness != null) {
    functionality.videoCaptureMotionControl = _liveness!.motionControl;
    functionality.showCaptureButton = _liveness!.showCaptureButton;
    if (_liveness!.captureButtonDelayFromDetect != null) {
      functionality.showCaptureButtonDelayFromDetect =
          _liveness!.captureButtonDelayFromDetect!;
    }
    if (_liveness!.captureButtonDelayFromStart != null) {
      functionality.showCaptureButtonDelayFromStart =
          _liveness!.captureButtonDelayFromStart!;
    }
  }

  // Apply camera frame configuration
  if (_cameraFrame != null) {
    functionality.cameraFrame = DocReaderFrame.SCENARIO_DEFAULT;
    if (_cameraFrame!.lineWidth != null) {
      customization.cameraFrameBorderWidth = _cameraFrame!.lineWidth!;
    }
    if (_cameraFrame!.borderColor != null) {
      customization.cameraFrameActiveColor = _cameraFrame!.borderColor!;
    }
    if (_cameraFrame!.cornerRadius != null) {
      customization.cameraFrameCornerRadius = _cameraFrame!.cornerRadius!;
    }
    if (_cameraFrame!.portraitAspectRatio != null) {
      customization.cameraFramePortraitAspectRatio =
          _cameraFrame!.portraitAspectRatio!;
    }
    if (_cameraFrame!.landscapeAspectRatio != null) {
      customization.cameraFrameLandscapeAspectRatio =
          _cameraFrame!.landscapeAspectRatio!;
    }
    if (_cameraFrame!.offsetWidth != null) {
      customization.cameraFrameOffsetWidth = _cameraFrame!.offsetWidth!;
    }
    if (_cameraFrame!.borderWidth != null) {
      customization.cameraFrameBorderWidth = _cameraFrame!.borderWidth!;
    }
  }

  // Apply messages configuration
  if (_messages != null) {
    customization.showStatusMessages = _messages!.showStatus;
    customization.showResultStatusMessages = _messages!.showResultStatus;
    if (_messages!.statusTextFont != null) {
      customization.statusTextFont = _messages!.statusTextFont;
    }

    if (_messages!.resultStatusTextFont != null) {
      customization.resultStatusTextFont = _messages!.resultStatusTextFont;
    }
  }

  // Apply toolbar configuration
  if (_toolbar != null) {
    if (_toolbar!.size != null) {
      customization.toolbarSize = _toolbar!.size!;
    }
    functionality.showCloseButton = _toolbar!.showCloseButton;
    functionality.showTorchButton = _toolbar!.showTorchButton;
    functionality.showCameraSwitchButton = _toolbar!.showCameraSwitchButton;
    functionality.showCaptureButton = _toolbar!.showCaptureButton;
    functionality.showChangeFrameButton = _toolbar!.showChangeFrameButton;
  }

  // Apply background configuration
  if (_background != null) {
    if (_background!.maskAlpha != null) {
      customization.backgroundMaskAlpha = _background!.maskAlpha!;
    }
  }

  // Apply instructions configuration
  if (_instructions != null) {
    customization.showHelpAnimation = _instructions!.showAnimation;
  }

  // Apply indicators configuration
  if (_indicators != null) {
    if (_indicators!.portraitPositionMultiplier != null) {
      customization.activityIndicatorPortraitPositionMultiplier =
          _indicators!.portraitPositionMultiplier!;
    }
    if (_indicators!.landscapePositionMultiplier != null) {
      customization.activityIndicatorLandscapePositionMultiplier =
          _indicators!.landscapePositionMultiplier!;
    }
  }

  // Apply functionality configuration
  if (_functionality != null) {
    if (_functionality!.cameraMode != null) {
      functionality.cameraMode = _functionality!.cameraMode!;
    }

    if (_functionality!.zoomFactor != null) {
      functionality.zoomFactor = _functionality!.zoomFactor!;
    }

    if (_functionality!.captureMode != null) {
      functionality.captureMode = _functionality!.captureMode!;
    }
    if (_functionality!.orientation != null) {
      functionality.orientation = _functionality!.orientation!;
    }
    functionality.skipFocusingFrames = _functionality!.skipFocusingFrames;
    if (_functionality!.exposure != null) {
      functionality.exposure = _functionality!.exposure!;
    }
    functionality.recordScanningProcess =
        _functionality!.recordScanningProcess;

    functionality.displayMetadata = _functionality!.displayMetadata;

    functionality.useAuthenticator = _functionality!.useAuthenticator;
  }

  // Apply process parameters configuration
  if (_processParams != null) {
    processParams.scenario = Scenario.FULL_AUTH;

    processParams.returnCroppedBarcode = _processParams!.returnCroppedBarcode;
    processParams.returnUncroppedImage = _processParams!.returnUncroppedImage;

    if (_processParams!.imageQuality != null) {
      final iq = _processParams!.imageQuality!;
      if (iq.dpiThreshold != null) {
        processParams.imageQA.dpiThreshold = iq.dpiThreshold!;
      }
      if (iq.angleThreshold != null) {
        processParams.imageQA.angleThreshold = iq.angleThreshold!;
      }
      processParams.imageQA.focusCheck = iq.focusCheck;
      processParams.imageQA.glaresCheck = iq.glaresCheck;
      processParams.imageQA.colornessCheck = iq.colornessCheck;
    }

    if (_processParams!.dateFormat != null) {
      processParams.dateFormat = _processParams!.dateFormat;
    }
    if (_processParams!.documentIdList != null) {
      processParams.documentIDList = _processParams!.documentIdList!;
    }
    processParams.multipageProcessing = _processParams!.multipageProcessing;
    processParams.alreadyCropped = _processParams!.alreadyCropped;
    processParams.generateNumericCodes = _processParams!.generateNumericCodes;
  }
}