Entry points
| API | Purpose |
|---|---|
NosmaiFlutter.initialize(licenseKey) | Initializes the native SDK once and returns whether startup was accepted |
NosmaiFlutter.instance | Shared operational API after initialization |
NosmaiCameraPreview | Native camera preview for processed camera output |
NosmaiCameraPreviewController | Reinitializes an attached preview when explicit recovery is required |
NosmaiCameraLifecycleMixin | Coordinates cleanup with Flutter application lifecycle |
Camera lifecycle
Use configureCamera, startProcessing, stopProcessing, switchCamera, pauseCamera, resumeCamera, detachCameraView, reinitializePreview, and cleanup. Await asynchronous operations and keep only one mounted preview. NosmaiCameraPreview starts the native view through the supported widget path; do not also create a Flutter camera controller for the same device.
Packages and state
applyEffect(path) is the unified package operation. applyFilter(path) is a filter-specific compatibility surface. Inspect getActiveEffects, getActiveFilterInfo, and getActiveEffectInfo; clear with clearFilter, clearAREffect, removeEffect, removeAllFilters, or clearAll according to the intended scope.
Use getEffectParameters, getEffectParameterValue, setEffectParameter, and setEffectParameterString only with names declared by the active authored package.
Cloud Filters
| API | Use |
|---|---|
getCloudFilters(...) | Fetches the licensed cloud catalog with type and pagination options |
downloadCloudFilter(filterId) | Downloads the selected Cloud Filter and prepares it for use |
removeCloudFilter(filterId) | Removes the downloaded Cloud Filter from SDK-managed storage |
Keep the cloud identifier and use the returned local path for application. The operating system may reclaim cache storage, so handle a missing path by downloading again.
Beauty, background, and camera hardware
The shared API exposes beauty, colour, makeup, reshape, eye-colour, and manual background controls. Check isBeautyFilterEnabled, isCloudFilterEnabled, and isAdvancedFiltersEnabled before presenting gated controls. Flash and torch use hasFlash, hasTorch, mode getters, and mode setters.
Media
licenseStatusStream,errorStream, download progress, and recording progress expose asynchronous state.capturePhoto,startRecording,stopRecording, and gallery-save helpers return typed result models.
Call dispose() on the shared Dart wrapper only when the application no longer needs the SDK process. Ordinary screen navigation should use the documented preview lifecycle instead of repeatedly destroying global state.