NitroCamera class abstract

The main NitroCamera hybrid module.

Use NitroCamera.instance directly, or prefer the higher-level CameraController + CameraPreview Dart API for widget integration.

Available extensions
Annotations
  • @NitroModule.new(ios: NativeImpl.swift, android: NativeImpl.kotlin)

Constructors

NitroCamera()

Properties

asAnyNativeObject → AnyNativeObject

Available on NitroCamera, provided by the NitroCameraNativeRef extension

no setter
eventStream → Stream<CameraEvent>
Stream of session lifecycle / error / interruption events across all open camera sessions. Buffered (oldest dropped) so events are never lost to a briefly-slow listener.
no setter
frameStream → Stream<CameraFrame>
Stream of raw camera frames for custom image processing pipelines. Only active for sessions where enableFrameProcessing was called with 1.
no setter
hashCode → int
The hash code for this object.
no setterinherited
isDisposed → bool
Whether dispose has been called on this object.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

cancelRecording(int textureId) → void
Cancels the current recording and deletes the temporary file.
checkDisposed() → void
Throws StateError if dispose has already been called. Called automatically at the start of every generated method and getter.
inherited
closeCamera(int textureId) → Future<void>
configure(int textureId, CameraConfig config) → Future<ResolvedConfig>
Applies a batch of live settings to the open session textureId in one pass and returns what was actually applied. The declarative analogue of the individual setters above — does NOT reopen the session (device/format/fps changes must go through openCamera).
dispose() → void
Releases all native resources held by this object.
inherited
enableDeviceAvailabilityEvents(int enabled) → void
Starts emitting CameraEventType.deviceConnected / CameraEventType.deviceDisconnected hot-plug events (e.g. USB cameras). enabled: 1 = on, 0 = off.
enableFrameProcessing(int textureId, int enabled) → void
Enables or disables raw frame delivery to frameStream. enabled: 1 = on, 0 = off.
enableOrientationEvents(int enabled) → void
Starts emitting CameraEventType.orientationChanged events for physical device rotation (via the native orientation sensor listener — works even when the UI orientation is locked). enabled: 1 = on, 0 = off.
getAvailableCameraDevices() → List<CameraDevice>
Returns a list of all available camera devices.
getAvailableCameraDevicesJson() → Future<String>
getCameraPermissionStatus() → int
Returns the current camera permission status without prompting.
getConcurrentCameraIdsJson() → String
Returns the camera-ID combinations that can stream CONCURRENTLY (multi-cam), as a JSON array of arrays (e.g. [["0","1"]]). Empty when unsupported (API < 30 or no combinations).
getDevice(int index) → CameraDevice
getDeviceCount() → int
getMicrophonePermissionStatus() → int
Returns the current microphone permission status without prompting.
getSessionStateJson(int textureId) → String
Returns the live session state (running, fps, resolution, pixelFormat) as a JSON object. Useful for diagnostics and UI read-back.
lockExposure(int textureId, int locked) → void
Locks or unlocks auto-exposure at its current value. locked: 1 = locked.
lockFocus(int textureId, int locked) → void
Locks or unlocks focus at its current position. locked: 1 = locked.
lockWhiteBalance(int textureId, int locked) → void
Locks or unlocks white balance at its current gains. locked: 1 = locked.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onDestroy() → void
Called once when dispose is first invoked. Override to perform cleanup (close file handles, cancel work, etc.).
inherited
onMemoryTrim() → void
Android low-memory signal. Override to release caches or non-critical data.
inherited
openCamera(String deviceId, int width, int height, int fps, int enableAudio) → Future<int>
Opens the camera identified by deviceId and starts streaming frames into a Flutter Texture. Returns the Flutter texture ID.
pauseRecording(int textureId) → void
Pauses an active video recording without finalising the file.
requestCameraPermission() → Future<int>
Requests camera permission from the OS. Returns a PermissionStatus value.
requestMicrophonePermission() → Future<int>
Requests microphone permission from the OS. Returns a PermissionStatus value.
reset() → void
Resets the native camera metadata caches and releases overall hardware locks. Call this to recover from serious CAMERA_ERROR or when hardware configuration changes (e.g. plugging in a USB camera).
resumeRecording(int textureId) → void
Resumes a paused video recording.
setAutoFocus(int textureId, int mode) → void
Sets the auto-focus mode. Pass an AutoFocusMode value.
setDistortionCorrection(int textureId, int enabled) → void
Enables or disables lens distortion correction on the capture pipeline (Camera2 DISTORTION_CORRECTION_MODE, API 28+). No-op when the device doesn't support it. enabled: 1 = on (HIGH_QUALITY), 0 = off.
setExposure(int textureId, double value) → void
Sets exposure compensation. value is -1.0 (darkest) to 1.0 (brightest).
setFilterShader(int textureId, String shaderSource) → void
Updates the GPU-accelerated filter shader on the camera preview. Pass a valid GLSL Fragment Shader source. The shader should expect:
setFlash(int textureId, int mode) → void
Sets the flash mode for photo capture. Pass a FlashMode value.
setFocusPoint(int textureId, double x, double y) → void
Locks focus at the normalised point (x, y) where (0,0) is top-left.
setFrameFormat(int textureId, int format) → void
Sets the pixel format for the frameStream. format: 0 = YUV_420_888 (Planar), 1 = BGRA_8888 (Interleaved RGB).
setHdr(int textureId, int enabled) → void
Enables or disables HDR capture. enabled: 1 = on.
setLowLightBoost(int textureId, int enabled) → void
Enables or disables low-light boost (night mode). enabled: 1 = on.
setNativeDetector(int textureId, String detector) → void
Runs a NATIVE ML detector on the session's frames, emitting CameraEventType.detection events with a JSON payload per hit. detector: "barcode" | "face" | "" (off). Requires the host app to add the matching ML Kit dependency (see docs) — throws a descriptive error event if the detector class is not on the classpath.
setSamplingRate(int textureId, int samplingRate) → void
Configures how many frames to skip before delivering to frameStream. samplingRate: 1 = every frame, 2 = every 2nd frame, etc.
setTargetOrientation(int textureId, int degrees) → void
Sets the target output orientation in degrees (0 / 90 / 180 / 270).
setTorch(int textureId, int enabled) → void
Enables or disables the torch (continuous flashlight). enabled: 1 = on.
setTorchLevel(int textureId, double level) → void
Sets the torch brightness in 0.0..1.0 (1.0 = max). Values > 0 imply torch on.
setVideoStabilization(int textureId, int mode) → void
Sets the video stabilization mode. Pass a VideoStabilizationMode value.
setWhiteBalance(int textureId, int temperature) → void
Sets the white-balance colour temperature in Kelvin. Pass 0 to restore automatic white balance.
setZoom(int textureId, double zoom) → void
Sets the zoom level. Must be within CameraDevice.minZoom .. CameraDevice.maxZoom.
startPreview(int textureId) → void
Resumes the camera preview after stopPreview.
startVideoRecording(int textureId, String outputPath, RecordingOptions options) → Future<void>
stopPreview(int textureId) → void
Pauses the camera preview without closing the session.
stopVideoRecording(int textureId) → Future<RecordingResult>
takePhoto(int textureId) → Future<PhotoResult>
takePhotoWithOptions(int textureId, PhotoOptions options) → Future<PhotoResult>
Captures a photo using explicit options (flash, quality, shutter sound).
takeSnapshot(int textureId) → Future<PhotoResult>
Captures the current preview frame as a fast JPEG snapshot (no full still-capture round-trip).
toString() → String
A string representation of this object.
inherited
updateOverlay(int textureId, Uint8List overlayData) → void
Draws a persistent shape or text vector onto the camera overlay. Renders directly on the GPU using the custom pipeline. overlayData is a serialized binary Buffer of draw commands.

Operators

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

Static Properties

instance → NitroCamera
final