ScannerController class

Standalone controller managing hardware camera lifecycle, frame throttling, adaptive frame processing, background isolate execution, ROI cropping, performance metrics telemetry, scan history, auto-zoom, and low-light controls.

Inheritance
Mixed-in types

Constructors

ScannerController({ScanMode initialMode = ScanMode.qr, ResolutionPreset resolutionPreset = cam.ResolutionPreset.high, ScannerOptions options = const ScannerOptions(), dynamic onResultDetected(ScanResult result)?, dynamic onLowLightDetected(bool isLowLight)?, dynamic onStatsUpdated(ScannerStats stats)?, dynamic onFrame(CameraImage frame)?, UniversalScanEngine? scanEngine, ImagePicker? imagePicker})
Constructs a ScannerController.

Properties

analytics ScannerAnalytics
Enterprise session telemetry analytics tracker.
final
availableCameras List<CameraDescription>
List of available hardware cameras on device.
no setter
batchResults List<ScanResult>
List of accumulated scan results collected in ScanStrategy.batch mode.
no setter
cameraController → CameraController?
Active camera controller instance, if initialized.
no setter
currentLuminosity double
Ambient frame relative brightness score (0.0 to 1.0).
no setter
currentMode ScanMode
Alias for active scanning mode.
no setter
currentZoomLevel double
Current digital zoom level setting (1.0 to maxZoomLevel).
no setter
errorMessage String?
Last error message encountered during camera or scan operations.
no setter
hashCode int
The hash code for this object.
no setterinherited
hasListeners bool
Whether any listeners are currently registered.
no setterinherited
isBlurry bool
Whether last evaluated frame was blurry.
no setter
isFlashOn bool
Whether flash/torch is currently turned on.
no setter
isFocusLocked bool
Whether autofocus is currently locked.
no setter
isInitialized bool
Whether camera controller and ML engine are initialized and ready.
no setter
isInitializing bool
Whether camera initialization is currently in progress.
no setter
isLowLight bool
Whether camera scene is currently under low ambient lighting.
no setter
isMotionDetected bool
Whether significant camera shaking or motion was detected.
no setter
isPaused bool
Whether live stream processing is currently paused.
no setter
lastResult ScanResult?
Most recently detected ScanResult.
no setter
lastTapFocusPoint Offset?
Most recent tap-to-focus point coordinates.
no setter
maxZoomLevel double
no setter
minZoomLevel double
no setter
motionScore double
Motion magnitude score.
no setter
onFrame → dynamic Function(CameraImage frame)?
Optional callback invoked on each raw live camera image frame for custom ML AI models.
final
onFrameStream Stream<CameraImage>
Stream emitting raw live camera image frames for custom ML AI pipelines.
no setter
onLowLightDetected → dynamic Function(bool isLowLight)?
Optional callback invoked when ambient light changes (low light alert).
final
onLowLightStateChanged Stream<bool>
Stream emitting low light status alerts.
no setter
onResult Stream<ScanResult>
Stream emitting valid detected ScanResult objects.
no setter
onResultDetected → dynamic Function(ScanResult result)?
Optional callback invoked when a valid scan result is detected.
final
onStats Stream<ScannerStats>
Stream emitting real-time performance telemetry.
no setter
onStatsUpdated → dynamic Function(ScannerStats stats)?
Optional callback invoked when internal performance telemetry updates.
final
options ScannerOptions
Configuration options controlling scan strategy, ROI, throttling, and timeouts.
final
resolutionPreset → ResolutionPreset
Active resolution preset setting.
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
scanHistory List<ScanResult>
In-memory log of recent scan history.
no setter
selectedCameraIndex int
Currently selected camera index in availableCameras.
no setter
selectedMode ScanMode
Currently active scanning mode.
no setter
stats ScannerStats
Current internal telemetry snapshot.
no setter
torchLevel double
Torch intensity brightness setting.
no setter

Methods

addListener(VoidCallback listener) → void
Register a closure to be called when the object changes.
inherited
autoZoomTo(double targetZoom) Future<void>
Auto-zooms by multiplier when small barcodes are far away.
availableCamerasFunc() Future<List<CameraDescription>>
Exposed for testing dependency injection.
clearBatch() → void
Clears accumulated batch inventory scan list.
clearHistory() → void
Clears in-memory scan history log.
didChangeAccessibilityFeatures() → void
Called when the system changes the set of currently active accessibility features.
inherited
didChangeAppLifecycleState(AppLifecycleState state) → void
Called when the system puts the app in the background or returns the app to the foreground.
override
didChangeLocales(List<Locale>? locales) → void
Called when the system tells the app that the user's locale has changed. For example, if the user changes the system language settings.
inherited
didChangeMetrics() → void
Called when the application's dimensions change. For example, when a phone is rotated.
inherited
didChangePlatformBrightness() → void
Called when the platform brightness changes.
inherited
didChangeTextScaleFactor() → void
Called when the platform's text scale factor changes.
inherited
didChangeViewFocus(ViewFocusEvent event) → void
Called whenever the PlatformDispatcher receives a notification that the focus state on a view has changed.
inherited
didHaveMemoryPressure() → void
Called when the system is running low on memory.
inherited
didPopRoute() Future<bool>
Called when the system tells the app to pop the current route, such as after a system back button press or back gesture.
inherited
didPushRoute(String route) Future<bool>
Called when the host tells the application to push a new route onto the navigator.
inherited
didPushRouteInformation(RouteInformation routeInformation) Future<bool>
Called when the host tells the application to push a new RouteInformation and a restoration state onto the router.
inherited
didRequestAppExit() Future<AppExitResponse>
Called when a request is received from the system to exit the application.
inherited
dispose() → void
Discards any resources used by the object.
override
exportBatchCsv() String
Exports accumulated batch results to CSV string format.
exportBatchJson() String
Exports accumulated batch results to JSON string format.
handleCancelBackGesture() → void
Called when a predictive back gesture is canceled, indicating that no navigation should occur.
inherited
handleCommitBackGesture() → void
Called when a predictive back gesture is finished successfully, indicating that the current route should be popped.
inherited
handleStartBackGesture(PredictiveBackEvent backEvent) bool
Called at the start of a predictive back gesture.
inherited
handleStatusBarTap() → void
Called when the user taps the status bar on iOS, to scroll a scroll view to the top.
inherited
handleUpdateBackGestureProgress(PredictiveBackEvent backEvent) → void
Called when a predictive back gesture moves.
inherited
initialize() Future<void>
Initializes hardware cameras and starts live stream processing with auto-recovery.
lockFocus() Future<void>
Locks autofocus to current focal plane to prevent continuous hunting.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notifyListeners() → void
Call all the registered listeners.
inherited
pauseScanning() → void
Pauses processing live stream image frames.
pickAndScanImage({ScanMode? mode}) Future<ScanResult?>
Opens gallery image picker and scans selected image file.
processBytes(Uint8List bytes, {ScanMode? mode, int width = 640, int height = 480}) Future<ScanResult>
Processes raw byte buffer directly from memory.
processImageFile(String imagePath, {ScanMode? mode}) Future<ScanResult>
Processes an image file from a local path.
removeBatchItem(int index) → void
Removes an item from batch scan list by index.
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that are notified when the object changes.
inherited
resumeScanning() → void
Resumes processing live stream image frames.
scanAll({ScanMode? mode}) Future<List<ScanResult>>
Executes a multi-code batch pass returning all detected ScanResult items in a single scan.
scanGallery({ScanMode? mode}) Future<ScanResult?>
Alias for pickAndScanImage for gallery scanning.
scanImage(File imageFile, {ScanMode? mode}) Future<ScanResult>
Scans a local image file directly from a File object.
setFlashMode(FlashMode mode) Future<void>
Sets explicit flash mode.
setMode(ScanMode mode) → void
Sets active scan mode.
setResolution(ResolutionPreset preset) Future<void>
Dynamically changes hardware camera resolution preset.
setTorchLevel(double level) Future<void>
Sets torch level brightness intensity (0.0 to 1.0).
setZoomLevel(double zoom) Future<void>
Sets absolute camera digital zoom level.
switchCamera() Future<void>
Switches to next available camera.
tapToFocus(Offset relativePoint) Future<void>
Trigger tap-to-focus on camera preview coordinates.
toggleFlash() Future<void>
Toggles camera flash (torch mode / off).
toString() String
A string representation of this object.
inherited
unlockFocus() Future<void>
Unlocks focus to resume continuous autofocus.
warmup() Future<void>
Pre-warms vision engine and hardware resources prior to UI layout assembly.

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

prewarm() Future<void>
Global static helper to pre-warm ML Kit engines and camera hardware before UI build.