< UIKit Flutter />
UTD Video Effects Kit
Filtres beauté en temps réel, étalonnage colorimétrique LUT et effets de visage.
import 'package:utd_video_effects_kit/utd_video_effects_kit.dart';
final fx = VideoEffectsProcessor.create();
final track = await LocalVideoTrack.createCameraTrack(
CameraCaptureOptions(processor: fx),
);
await fx.setSmoothing(0.6);
await fx.setFilter('teal_orange', intensity: 0.8);
await fx.setBackgroundBlur(0.4);
await fx.setEyeColor('#3366CC', opacity: 0.6);
await fx.setLipstick('#CC2244');
// Or use the built-in UI:
VideoEffectsSheet.show(context, processor: fx);46+
Filtres LUT
9
Accessoires
6
Looks maquillage
GPU
Temps réel
< utd_video_effects_kit />
Fonctionnalités clés
Effets vidéo et filtres beauté en temps réel pour les applications Flutter basées sur l'UTD Stream Engine. Les effets s'exécutent via un TrackProcessor sur des pipelines GPU natifs (Android/iOS) et regroupent 46+ filtres colorimétriques LUT, lissage/éclaircissement de la peau, flou d'arrière-plan et effets de visage propulsés par MediaPipe (couleur des yeux, maquillage, accessoires). Inclut une UI VideoEffectsSheet intégrée avec les onglets Beauty/Filters/Makeup/Accessories.
46+ filtres colorimétriques LUT (looks sélectionnés + maison)
Effets beauté : lissage de la peau (séparation de fréquences), éclaircissement, flou d'arrière-plan
Effets de visage via MediaPipe : couleur des yeux, maquillage (rouge à lèvres/fard à paupières/blush), 9 accessoires
Post-traitement colorimétrique : glow/bloom (Orton), grain de film, vignettage
Retouche de la peau : détail de texture, clarté, éclaircissement sélectif
Remodelage du visage : déformation pilotée par les points de repère (agrandir les yeux, affiner le visage, affiner le nez, …)
UI VideoEffectsSheet prête à l'emploi (onglets Beauty/Filters/Makeup/Accessories)
Looks de maquillage sélectionnés et presets de teint de peau
Gestion adaptative du budget d'images selon les paliers de performance des appareils
Attachement sans glue du processeur vidéo au LocalVideoTrack
< utd_video_effects_kit />
Commencer
Installer
dependencies:
utd_video_effects_kit: ^0.10.0Voir sur pub.dev
Filtres beauté en temps réel, étalonnage colorimétrique LUT et effets de visage.
< utd_video_effects_kit />
Référence de l'API
Main processor
The single public entry point: a video processor that applies GPU beauty/filter effects natively.
VideoEffectsProcessorclassabstract class VideoEffectsProcessor extends TrackProcessor<VideoProcessorOptions>Engine-compatible video processor that applies GPU beauty/filter effects natively and exposes the result via processedTrack. Has no per-frame process() hook; pixel work runs natively.
VideoEffectsProcessor.createconstructorfactory VideoEffectsProcessor.create({EffectsState initial = const EffectsState()})Builds the default native-backed implementation. The only way to construct a processor.
Paramètres
initialEffectsStatePar défaut = const EffectsState()Initial effect settings the processor starts with.
Retourne: VideoEffectsProcessor — A native-backed processor instance.
stategetterValueListenable<EffectsState> get stateLive, read-only snapshot of current effect settings. Bind UI to this.
Retourne: ValueListenable<EffectsState> — Listenable of the current immutable EffectsState.
isSupportedgetterbool get isSupportedWhether this device/platform can actually process pixels. False means processedTrack is a passthrough (original camera frames flow unmodified).
Retourne: bool — True if native pixel processing is available.
disposemethodvoid dispose()Final teardown: releases the effect-state listenable. Call when the live session ends. Distinct from the engine's per-capture destroy().
Retourne: void — Nothing.
Adaptive performance & telemetry
Frame-budget signals and on-device measurement/parity harness.
budgetExceededgetterValueListenable<bool> get budgetExceededTrue while the native pipeline sheds work to hold the frame budget (degrade level > 0). Emits only on change. Always false on unsupported platforms.
Retourne: ValueListenable<bool> — Listenable performance-mode flag.
degradeLevelgetterValueListenable<int> get degradeLevelCurrent adaptive frame-budget degrade level: 0 (full quality) .. 4 (max shedding). 0 on unsupported platforms.
Retourne: ValueListenable<int> — Listenable degrade level 0..4.
deviceTiergetterValueListenable<int> get deviceTierStatic device performance tier classified natively at attach: 0 Budget, 1 Low, 2 Mid, 3 Flagship. 3 on unsupported platforms or before first attach.
Retourne: ValueListenable<int> — Listenable device tier 0..3.
perfStatsmethodasyncFuture<EffectsPerfStats?> perfStats({bool reset = false})Pulls a snapshot of native frame-budget telemetry (over-budget rate + frame-time distribution). Returns null on web/unsupported or with no native session.
Paramètres
resetboolPar défaut = falseClear counters after reading so the next call measures a fresh window.
Retourne: Future<EffectsPerfStats?> — Telemetry snapshot, or null if unavailable.
renderTestFramemethodasyncFuture<EffectsTestFrame?> renderTestFrame(Uint8List rgba, {required int width, required int height})Runs an RGBA8888 image through the native COLOR grade with current settings and returns the processed RGBA8888 (CPU-vs-GPU parity harness). Call with effects disabled. Returns null if unavailable.
Paramètres
rgbaUint8ListrequisRGBA8888 row-major input, width*height*4 bytes.
widthintrequisInput image width in pixels.
heightintrequisInput image height in pixels.
Retourne: Future<EffectsTestFrame?> — Graded output frame, or null if unavailable.
Beauty & color setters
Skin smoothing, whitening, LUT filters, and the color-post (glow/grain/vignette) tail.
setEnabledmethodasyncFuture<void> setEnabled(bool enabled)Master on/off switch. When off the native pipeline is a 1:1 passthrough.
Paramètres
enabledboolrequisWhether effects are applied.
Retourne: Future<void> — Completes when applied.
setSmoothingmethodasyncFuture<void> setSmoothing(double amount)Skin-smoothing strength, 0.0..1.0 (frequency-separation / bilateral).
Paramètres
amountdoublerequisSmoothing strength, 0.0..1.0 (0 = off).
Retourne: Future<void> — Completes when applied.
setWhiteningmethodasyncFuture<void> setWhitening(double amount)Whitening / brightness strength, 0.0..1.0.
Paramètres
amountdoublerequisWhitening strength, 0.0..1.0 (0 = off).
Retourne: Future<void> — Completes when applied.
setFiltermethodasyncFuture<void> setFilter(String? lutAssetKey, {double intensity = 1.0})Apply a LUT color filter by key (null clears it). See VideoEffectsFilters.
Paramètres
lutAssetKeyString?requisFilter key (e.g. 'warm'), or null to clear.
intensitydoublePar défaut = 1.0Blend amount, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setBackgroundBlurmethodasyncFuture<void> setBackgroundBlur(double amount)Background-blur strength, 0.0..1.0 (selfie segmentation + blur).
Paramètres
amountdoublerequisBlur strength, 0.0..1.0 (0 = off).
Retourne: Future<void> — Completes when applied.
setGlowmethodasyncFuture<void> setGlow(double amount)Soft glow / bloom (Orton) strength, 0.0..1.0. The highest-impact beauty color post effect.
Paramètres
amountdoublerequisGlow strength, 0.0..1.0 (0 = off).
Retourne: Future<void> — Completes when applied.
setGrainmethodasyncFuture<void> setGrain(double amount)Film-grain amount, 0.0..1.0 (animated per frame).
Paramètres
amountdoublerequisGrain amount, 0.0..1.0 (0 = off).
Retourne: Future<void> — Completes when applied.
setVignettemethodasyncFuture<void> setVignette(double amount)Vignette strength, 0.0..1.0 (darkens frame corners).
Paramètres
amountdoublerequisVignette strength, 0.0..1.0 (0 = off).
Retourne: Future<void> — Completes when applied.
setTextureDetailmethodasyncFuture<void> setTextureDetail(double amount)Pore/texture retained by frequency-separation smoothing, 0.0..1.0 (0 = plastic, 1 = full texture). Only affects skin when smoothing > 0.
Paramètres
amountdoublerequisTexture retention, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setClaritymethodasyncFuture<void> setClarity(double amount)Local-contrast clarity, signed -1.0..1.0. Positive = punchy/pop, negative = soft dreamy skin. 0 = off.
Paramètres
amountdoublerequisSigned clarity, -1.0..1.0.
Retourne: Future<void> — Completes when applied.
Skin retouch & tone
Selective brightening (teeth/eye/under-eye) and skin-tone presets/shift.
setTeethWhiteningmethodasyncFuture<void> setTeethWhitening(double amount)Teeth-whitening strength, 0.0..1.0 (0 = off).
Paramètres
amountdoublerequisTeeth-whitening strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setEyeBrighteningmethodasyncFuture<void> setEyeBrightening(double amount)Eye-white (sclera) brightening, 0.0..1.0 (0 = off).
Paramètres
amountdoublerequisEye-white brightening strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setUnderEyeBrighteningmethodasyncFuture<void> setUnderEyeBrightening(double amount)Under-eye (tear-trough) brightening, 0.0..1.0 (0 = off).
Paramètres
amountdoublerequisUnder-eye brightening strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setSkinColormethodasyncFuture<void> setSkinColor(String? presetKey)Apply a skin-tone preset by key (null clears it). See VideoEffectsSkinTones.
Paramètres
presetKeyString?requisSkin-tone preset key (e.g. 'nuanbai'), or null to clear.
Retourne: Future<void> — Completes when applied.
setSkinToneShiftmethodasyncFuture<void> setSkinToneShift(double amount)Skin-tone shift, signed -1.0..1.0: warms (+) or cools (-) skin via hue rotation gated by the adaptive skin mask. 0 = off.
Paramètres
amountdoublerequisSigned skin-tone shift, -1.0..1.0.
Retourne: Future<void> — Completes when applied.
setSegmentationSkinmethodasyncFuture<void> setSegmentationSkin(bool enabled)Use multiclass segmentation to refine the skin region so skin effects apply to actual skin. Loads a larger/slower model. Default off.
Paramètres
enabledboolrequisWhether segmentation-refined skin masking is on.
Retourne: Future<void> — Completes when applied.
Makeup, sculpt & reshape setters
Landmark-driven makeup recolor, dodge/burn sculpt, and liquify reshape.
setEyeColormethodasyncFuture<void> setEyeColor(String? hex, {double opacity = 0.5})Recolor the iris with hex (e.g. '#3366CC', null clears it).
Paramètres
hexString?requisIris color hex, or null to clear.
opacitydoublePar défaut = 0.5Recolor strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setLipstickmethodasyncFuture<void> setLipstick(String? hex, {double opacity = 0.6, String finish = 'satin', String style = 'full'})Apply lipstick in hex (null clears it). finish: matte/satin/gloss. style: full/ombre/blurred.
Paramètres
hexString?requisLipstick color hex, or null to clear.
opacitydoublePar défaut = 0.6Strength, 0.0..1.0.
finishStringPar défaut = 'satin'matte, satin, or gloss.
styleStringPar défaut = 'full'full, ombre, or blurred.
Retourne: Future<void> — Completes when applied.
setEyeshadowmethodasyncFuture<void> setEyeshadow(String? hex, {double opacity = 0.45, String? color2, double shimmer = 0})Apply eyeshadow in hex (null clears it). color2 gives a two-tone gradient; shimmer adds sparkle.
Paramètres
hexString?requisEyeshadow color hex, or null to clear.
opacitydoublePar défaut = 0.45Strength, 0.0..1.0.
color2String?Par défaut = nullSecond hex for a two-tone (darker lash-line) gradient.
shimmerdoublePar défaut = 0Sparkle amount, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setBlushmethodasyncFuture<void> setBlush(String? hex, {double opacity = 0.4})Apply blush in hex (null clears it).
Paramètres
hexString?requisBlush color hex, or null to clear.
opacitydoublePar défaut = 0.4Strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setEyelinermethodasyncFuture<void> setEyeliner(String? hex, {double opacity = 0.7, String style = 'classic'})Apply eyeliner in hex (null clears it). style: classic or wing (adds an outer flick).
Paramètres
hexString?requisEyeliner color hex, or null to clear.
opacitydoublePar défaut = 0.7Strength, 0.0..1.0.
styleStringPar défaut = 'classic'classic or wing.
Retourne: Future<void> — Completes when applied.
setMakeupLookmethodasyncFuture<void> setMakeupLook(MakeupLook? look)Apply a coordinated MakeupLook in one call (lipstick + finish, eyeshadow, blush, eye color). Null clears all makeup regions. See VideoEffectsMakeup.looks.
Paramètres
lookMakeupLook?requisThe look to apply, or null to clear all makeup.
Retourne: Future<void> — Completes when applied.
setContourmethodasyncFuture<void> setContour(double amount)Contour (cool-gray cheek/nose burn) strength, 0.0..1.0 (0 = off).
Paramètres
amountdoublerequisContour strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setHighlightmethodasyncFuture<void> setHighlight(double amount)Highlight (warm-white dodge on high points) strength, 0.0..1.0 (0 = off).
Paramètres
amountdoublerequisHighlight strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setEyeEnlargemethodasyncFuture<void> setEyeEnlarge(double amount)Eye-enlarge reshape strength, 0.0..1.0 (0 = off).
Paramètres
amountdoublerequisEye-enlarge strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setFaceSlimmethodasyncFuture<void> setFaceSlim(double amount)Face-slim reshape strength, 0.0..1.0 (0 = off).
Paramètres
amountdoublerequisFace-slim strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setNoseNarrowmethodasyncFuture<void> setNoseNarrow(double amount)Nose-narrow reshape strength, 0.0..1.0 (0 = off).
Paramètres
amountdoublerequisNose-narrow strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setLipPlumpmethodasyncFuture<void> setLipPlump(double amount)Lip-plump reshape strength, 0.0..1.0 (0 = off).
Paramètres
amountdoublerequisLip-plump strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
setChinShortenmethodasyncFuture<void> setChinShorten(double amount)Chin-shorten reshape strength, 0.0..1.0 (0 = off).
Paramètres
amountdoublerequisChin-shorten strength, 0.0..1.0.
Retourne: Future<void> — Completes when applied.
Accessories setters
Toggle landmark-positioned PNG overlays. One toggle per accessory.
setGlassesmethodasyncFuture<void> setGlasses(bool enabled)Toggle the glasses accessory overlay.
Paramètres
enabledboolrequisWhether the glasses overlay is shown.
Retourne: Future<void> — Completes when applied.
setSunglassesmethodasyncFuture<void> setSunglasses(bool enabled)Toggle the sunglasses accessory overlay.
Paramètres
enabledboolrequisWhether the sunglasses overlay is shown.
Retourne: Future<void> — Completes when applied.
setCrownmethodasyncFuture<void> setCrown(bool enabled)Toggle the crown accessory overlay.
Paramètres
enabledboolrequisWhether the crown overlay is shown.
Retourne: Future<void> — Completes when applied.
setCatEarsmethodasyncFuture<void> setCatEars(bool enabled)Toggle the cat-ears accessory overlay.
Paramètres
enabledboolrequisWhether the cat-ears overlay is shown.
Retourne: Future<void> — Completes when applied.
setFlowerCrownmethodasyncFuture<void> setFlowerCrown(bool enabled)Toggle the flower-crown accessory overlay.
Paramètres
enabledboolrequisWhether the flower-crown overlay is shown.
Retourne: Future<void> — Completes when applied.
setPartyHatmethodasyncFuture<void> setPartyHat(bool enabled)Toggle the party-hat accessory overlay.
Paramètres
enabledboolrequisWhether the party-hat overlay is shown.
Retourne: Future<void> — Completes when applied.
setBunnyEarsmethodasyncFuture<void> setBunnyEars(bool enabled)Toggle the bunny-ears accessory overlay.
Paramètres
enabledboolrequisWhether the bunny-ears overlay is shown.
Retourne: Future<void> — Completes when applied.
setMustachemethodasyncFuture<void> setMustache(bool enabled)Toggle the mustache accessory overlay.
Paramètres
enabledboolrequisWhether the mustache overlay is shown.
Retourne: Future<void> — Completes when applied.
setHalomethodasyncFuture<void> setHalo(bool enabled)Toggle the halo accessory overlay.
Paramètres
enabledboolrequisWhether the halo overlay is shown.
Retourne: Future<void> — Completes when applied.
Built-in UI
Drop-in bottom sheet that drives a processor with Beauty/Filters/Makeup/Accessories tabs.
VideoEffectsSheetclassclass VideoEffectsSheetSelf-contained beauty & filters bottom sheet (Beauty / Filters / Makeup / Accessories tabs) that drives a VideoEffectsProcessor. Dark over-video styling; accent from theme primary; auto Arabic labels.
VideoEffectsSheet.showmethodasyncstatic Future<void> show(BuildContext context, {required VideoEffectsProcessor processor, double heightFactor = defaultHeightFactor})Opens the beauty & filters sheet for processor. Turns the master switch on (idempotent), then shows a modal bottom sheet. Returns when dismissed.
Paramètres
contextBuildContextrequisBuild context to show the modal in.
processorVideoEffectsProcessorrequisThe processor the sheet controls.
heightFactordoublePar défaut = defaultHeightFactor (0.25)Sheet height as a fraction of screen height.
Retourne: Future<void> — Completes when the sheet is dismissed.
defaultHeightFactorpropertystatic const double defaultHeightFactor = 0.25Default sheet height as a fraction of the screen height (1/4).
Retourne: double — 0.25
Catalogs (filters, skin tones, accessories, makeup)
Pure-data catalogs of bundled LUT filters, skin-tone presets, accessories, and makeup shades/looks.
VideoEffectsFiltersclassclass VideoEffectsFiltersCatalog of bundled LUT color filters (45+ entries). Static-only (private constructor).
VideoEffectsFilters.allpropertystatic const List<VideoEffectFilter> allAll bundled LUT filters, in display order (fresh, night, autumn, clean_girl, teal_orange, etc.).
Retourne: List<VideoEffectFilter> — Bundled filter catalog.
VideoEffectsFilters.assetFormethodstatic String? assetFor(String? key)The LUT asset path for a filter key, or null for an unknown/cleared key.
Paramètres
keyString?requisFilter key to resolve.
Retourne: String? — Asset path or null.
VideoEffectsFilters.previewFormethodstatic String previewFor(String? key)Preview thumbnail asset path for a filter key (portrait with filter applied). Null gives the unfiltered 'none' preview.
Paramètres
keyString?requisFilter key, or null for the 'none' preview.
Retourne: String — Preview asset path.
VideoEffectsFilters.skinPreviewFormethodstatic String skinPreviewFor(String? key)Preview thumbnail asset path for a skin-tone preset (same portrait, skin LUT grade).
Paramètres
keyString?requisSkin-tone key, or null for the 'none' preview.
Retourne: String — Preview asset path.
VideoEffectFilterclassclass VideoEffectFilter { const VideoEffectFilter(this.key, this.label, this.asset); }A bundled LUT color filter: stable key, human label, and 512x512 LUT PNG asset path.
Paramètres
keyStringrequisStable key passed to setFilter, e.g. 'fresh'.
labelStringrequisHuman-readable label, e.g. 'Fresh'.
assetStringrequisPackaged asset path of the LUT PNG.
VideoEffectsSkinTonesclassclass VideoEffectsSkinTonesCatalog of bundled skin-tone presets (Warm/Cool/Pink/Wheat/Tan). Static-only. Has all (List<VideoEffectSkinTone>) and byKey(String?).
VideoEffectsSkinTones.byKeymethodstatic VideoEffectSkinTone? byKey(String? key)Look up a skin-tone preset by key, or null for unknown/null.
Paramètres
keyString?requisSkin-tone preset key.
Retourne: VideoEffectSkinTone? — Preset or null.
VideoEffectsAccessoriesclassclass VideoEffectsAccessoriesCatalog of bundled PNG accessories (glasses, crown, catEars, sunglasses, flowerCrown, partyHat, bunnyEars, mustache, halo). Static-only.
VideoEffectsAccessories.allpropertystatic const List<VideoEffectAccessory> allAll bundled accessories, each with a key matching the EffectsState toggle.
Retourne: List<VideoEffectAccessory> — Accessory catalog.
VideoEffectsAccessories.assetFormethodstatic String? assetFor(String? key)The PNG asset path for an accessory key, or null for an unknown key.
Paramètres
keyString?requisAccessory key to resolve.
Retourne: String? — Asset path or null.
VideoEffectsMakeupclassclass VideoEffectsMakeupCurated makeup shades + full looks. Static-only. Exposes lipstick, eyeshadow, blush, eyeColor (List<MakeupShade>) and looks (List<MakeupLook>).
VideoEffectsMakeup.lookspropertystatic const List<MakeupLook> looksCoordinated full looks (lip + eyeshadow + blush [+ eye color]): natural, glam, soft_rose, bold_berry, sunkissed, smoky_night.
Retourne: List<MakeupLook> — Curated full looks.
VideoEffectsMakeup.lookByKeymethodstatic MakeupLook? lookByKey(String? key)Look up a coordinated MakeupLook by key, or null for unknown/null.
Paramètres
keyString?requisLook key.
Retourne: MakeupLook? — Look or null.
Models & data types
Immutable state snapshot, catalog item types, and telemetry/parity result types.
EffectsStateclassclass EffectsState { const EffectsState({bool enabled = false, double smoothing = 0, ... bool halo = false}); }Immutable snapshot of active video-effect settings (~50 fields: enabled, smoothing, whitening, filterKey/filterIntensity, makeup hex+opacity, sculpt/reshape scalars, accessory bools). All intensities normalized 0.0..1.0.
Paramètres
enabledboolPar défaut = falseMaster switch.
smoothingdoublePar défaut = 0Skin-smoothing strength.
filterKeyString?Par défaut = nullActive LUT filter key, or null.
filterIntensitydoublePar défaut = 1.0Blend amount for filterKey.
……Plus whitening, glow, grain, vignette, clarity, makeup hex/opacity fields, reshape/sculpt scalars, and accessory bools.
copyWithmethodEffectsState copyWith({bool? enabled, double? smoothing, Object? filterKey = _unset, ...})Returns a copy with the given fields changed. Nullable fields use an _unset sentinel so passing null clears (vs leaving unchanged).
Paramètres
……Any subset of EffectsState fields to override.
Retourne: EffectsState — A new modified state.
toMapmethodMap<String, dynamic> toMap()Serialized form sent to the native pipeline over the method channel.
Retourne: Map<String, dynamic> — All effect fields as a map.
VideoEffectSkinToneclassconst VideoEffectSkinTone(this.key, this.label, this.skinAsset, this.bgAsset)A skin-tone preset (dual-LUT grade): a skin LUT over skin regions plus a background LUT elsewhere.
Paramètres
keyStringrequisStable preset key, e.g. 'nuanbai'.
labelStringrequisHuman label, e.g. 'Warm'.
skinAssetStringrequisSkin-region LUT asset path.
bgAssetStringrequisBackground LUT asset path.
VideoEffectAccessoryclassconst VideoEffectAccessory(this.key, this.label, this.asset)A landmark-positioned PNG accessory overlay.
Paramètres
keyStringrequisStable key matching the EffectsState toggle, e.g. 'glasses'.
labelStringrequisHuman-readable label.
assetStringrequisPackaged transparent PNG asset path.
MakeupShadeclassconst MakeupShade(this.key, this.label, this.hex, this.opacity)A curated makeup shade: a hex color plus recommended opacity for one region. Feed hex+opacity into the matching setter.
Paramètres
keyStringrequisStable key, e.g. 'classic_red'.
labelStringrequisHuman label, e.g. 'Classic Red'.
hexStringrequis#RRGGBB color.
opacitydoublerequisRecommended strength, 0.0..1.0.
MakeupLookclassconst MakeupLook(this.key, this.label, {String? lipstick, double lipstickOpacity = 0.6, String lipFinish = 'satin', String? eyeshadow, ...})A full makeup look bundling coordinated shades across regions. Apply with setMakeupLook. Has a preview getter for the thumbnail asset path.
Paramètres
keyStringrequisStable look key.
labelStringrequisHuman label.
lipstickString?Par défaut = nullLipstick hex.
lipFinishStringPar défaut = 'satin'matte, satin, or gloss.
eyeshadowString?Par défaut = nullEyeshadow hex (plus blush, eyeColor, and per-region opacities).
EffectsPerfStatsclassclass EffectsPerfStats { const EffectsPerfStats({required int frames, ... required double frameMs}); }Immutable snapshot of native frame-budget telemetry: frame counts, over-budget/over-frame counts, raise/lower events, per-level frames, mean/p50/p95/p99/max ms, histogram bins, device tier, and budget/frame thresholds.
Paramètres
framesintrequisTotal frames timed since last reset.
overBudgetintrequisFrames slower than budgetMs.
……Plus overFrame, raiseEvents, lowerEvents, levelFrames, meanMs, maxMs, p50/p95/p99Ms, binMs, bins, tier, budgetMs, frameMs.
overBudgetRategetterdouble get overBudgetRateFraction of frames slower than budgetMs (0.0..1.0). The primary perf signal.
Retourne: double — Over-budget fraction.
overFrameRategetterdouble get overFrameRateFraction of frames slower than frameMs — i.e. frames that actually dropped.
Retourne: double — Dropped-frame fraction.
EffectsPerfStats.fromMapmethodstatic EffectsPerfStats? fromMap(Map<String, dynamic>? m)Builds a snapshot from the native channel map; null for a null/empty map.
Paramètres
mMap<String, dynamic>?requisNative telemetry map.
Retourne: EffectsPerfStats? — Snapshot or null.
EffectsTestFrameclassconst EffectsTestFrame({required Uint8List rgba, required int width, required int height})Result of renderTestFrame: an RGBA8888 image produced by running a known input through the native color grade with current settings.
Paramètres
rgbaUint8ListrequisGraded pixels, RGBA8888 row-major, alpha opaque.
widthintrequisImage width in pixels.
heightintrequisImage height in pixels.
FrameDiffclassclass FrameDiff { const FrameDiff({required int maxDelta, required double meanDelta, required int pixels, required int diffPixels, required int threshold}); }A per-channel difference summary between two RGBA8888 buffers (pure Dart, offline-testable). Has diffFraction getter and a static compare().
Paramètres
maxDeltaintrequisLargest absolute per-channel delta (0..255).
meanDeltadoublerequisMean absolute per-channel delta over RGB.
pixelsintrequisTotal pixels compared.
diffPixelsintrequisPixels differing by more than threshold.
thresholdintrequisPer-channel delta counted as different.
FrameDiff.comparemethodstatic FrameDiff compare(Uint8List a, Uint8List b, {int threshold = 2})Compares two RGBA8888 buffers on RGB channels (alpha ignored). Returns a zeroed diff when sizes mismatch or are empty.
Paramètres
aUint8ListrequisFirst RGBA8888 buffer.
bUint8ListrequisSecond RGBA8888 buffer.
thresholdintPar défaut = 2Per-channel delta above which a pixel counts as different.
Retourne: FrameDiff — The difference summary.
Prêt à construire avec UTD ?
Créez votre compte, alimentez votre portefeuille principal et activez les services dont vous avez besoin.