ScannerOptions.custom constructor

ScannerOptions.custom({
  1. ScanStrategy scanStrategy = ScanStrategy.continuous,
  2. ScanWindow? scanWindow = ScanWindow.centerReticle,
  3. Rect? scanArea,
  4. bool? allowDuplicates,
  5. Duration? duplicateDelay,
  6. int frameThrottleMs = 50,
  7. int targetFrameRate = 20,
  8. bool enableAdaptiveFps = true,
  9. bool enableAdaptiveFrameSkipping = true,
  10. bool enablePauseOnStaticFrame = true,
  11. bool enableProgressiveResolution = true,
  12. Duration duplicateTimeout = const Duration(milliseconds: 2000),
  13. bool enableDuplicateFilter = true,
  14. bool enableDetectionCache = true,
  15. Duration detectionCacheTimeout = const Duration(milliseconds: 2000),
  16. int frameQueueCapacity = 3,
  17. bool enableIsolateProcessing = true,
  18. bool enableImageEnhancement = true,
  19. bool enableBlurDetection = true,
  20. bool enableAutoBrightnessCheck = true,
  21. bool autoTorchInLowLight = false,
  22. double lowLightThreshold = 0.25,
  23. bool enableAutoZoom = true,
  24. bool autoResetZoomAfterScan = true,
  25. double autoZoomThreshold = 0.15,
  26. bool continuousAutofocus = true,
  27. bool enableMultiCodeDetection = true,
  28. int maxMultiCodeCount = 10,
  29. bool enableScanHistory = true,
  30. int maxHistorySize = 50,
  31. int? maxBatchCount,
  32. double minConfidence = 0.70,
  33. List<String>? allowedFormats,
  34. bool enableSound = true,
  35. bool enableVibration = true,
  36. double torchLevel = 1.0,
  37. bool isFocusLocked = false,
  38. bool enableAutoCapture = true,
  39. double autoCaptureQualityThreshold = 0.85,
  40. int autoCaptureSteadyFrames = 3,
  41. bool enableMultiFrameConsensus = true,
  42. int consensusFrameCount = 3,
  43. double consensusAccuracyThreshold = 0.98,
  44. bool enableAdaptiveRoi = true,
})

Factory constructor supporting explicit scanArea, allowDuplicates, and duplicateDelay parameters.

Implementation

factory ScannerOptions.custom({
  ScanStrategy scanStrategy = ScanStrategy.continuous,
  ScanWindow? scanWindow = ScanWindow.centerReticle,
  Rect? scanArea,
  bool? allowDuplicates,
  Duration? duplicateDelay,
  int frameThrottleMs = 50,
  int targetFrameRate = 20,
  bool enableAdaptiveFps = true,
  bool enableAdaptiveFrameSkipping = true,
  bool enablePauseOnStaticFrame = true,
  bool enableProgressiveResolution = true,
  Duration duplicateTimeout = const Duration(milliseconds: 2000),
  bool enableDuplicateFilter = true,
  bool enableDetectionCache = true,
  Duration detectionCacheTimeout = const Duration(milliseconds: 2000),
  int frameQueueCapacity = 3,
  bool enableIsolateProcessing = true,
  bool enableImageEnhancement = true,
  bool enableBlurDetection = true,
  bool enableAutoBrightnessCheck = true,
  bool autoTorchInLowLight = false,
  double lowLightThreshold = 0.25,
  bool enableAutoZoom = true,
  bool autoResetZoomAfterScan = true,
  double autoZoomThreshold = 0.15,
  bool continuousAutofocus = true,
  bool enableMultiCodeDetection = true,
  int maxMultiCodeCount = 10,
  bool enableScanHistory = true,
  int maxHistorySize = 50,
  int? maxBatchCount,
  double minConfidence = 0.70,
  List<String>? allowedFormats,
  bool enableSound = true,
  bool enableVibration = true,
  double torchLevel = 1.0,
  bool isFocusLocked = false,
  bool enableAutoCapture = true,
  double autoCaptureQualityThreshold = 0.85,
  int autoCaptureSteadyFrames = 3,
  bool enableMultiFrameConsensus = true,
  int consensusFrameCount = 3,
  double consensusAccuracyThreshold = 0.98,
  bool enableAdaptiveRoi = true,
}) {
  return ScannerOptions(
    scanStrategy: scanStrategy,
    scanWindow: scanWindow,
    rectScanArea: scanArea,
    duplicateTimeout: duplicateDelay ?? duplicateTimeout,
    enableDuplicateFilter:
        allowDuplicates != null ? !allowDuplicates : enableDuplicateFilter,
    frameThrottleMs: frameThrottleMs,
    targetFrameRate: targetFrameRate,
    enableAdaptiveFps: enableAdaptiveFps,
    enableAdaptiveFrameSkipping: enableAdaptiveFrameSkipping,
    enablePauseOnStaticFrame: enablePauseOnStaticFrame,
    enableProgressiveResolution: enableProgressiveResolution,
    enableDetectionCache: enableDetectionCache,
    detectionCacheTimeout: detectionCacheTimeout,
    frameQueueCapacity: frameQueueCapacity,
    enableIsolateProcessing: enableIsolateProcessing,
    enableImageEnhancement: enableImageEnhancement,
    enableBlurDetection: enableBlurDetection,
    enableAutoBrightnessCheck: enableAutoBrightnessCheck,
    autoTorchInLowLight: autoTorchInLowLight,
    lowLightThreshold: lowLightThreshold,
    enableAutoZoom: enableAutoZoom,
    autoResetZoomAfterScan: autoResetZoomAfterScan,
    autoZoomThreshold: autoZoomThreshold,
    continuousAutofocus: continuousAutofocus,
    enableMultiCodeDetection: enableMultiCodeDetection,
    maxMultiCodeCount: maxMultiCodeCount,
    enableScanHistory: enableScanHistory,
    maxHistorySize: maxHistorySize,
    maxBatchCount: maxBatchCount,
    minConfidence: minConfidence,
    allowedFormats: allowedFormats,
    enableSound: enableSound,
    enableVibration: enableVibration,
    torchLevel: torchLevel,
    isFocusLocked: isFocusLocked,
    enableAutoCapture: enableAutoCapture,
    autoCaptureQualityThreshold: autoCaptureQualityThreshold,
    autoCaptureSteadyFrames: autoCaptureSteadyFrames,
    enableMultiFrameConsensus: enableMultiFrameConsensus,
    consensusFrameCount: consensusFrameCount,
    consensusAccuracyThreshold: consensusAccuracyThreshold,
    enableAdaptiveRoi: enableAdaptiveRoi,
  );
}