Skip to content

Cheatsheet

The whole public surface on one page. Everything here works today. Render any registered composition from the repo root:

Terminal window
dart run packages/fluvie_cli/bin/fluvie.dart render 01_hello_video --out build/01_hello_video.mp4
LiteralMeaning
18.framesabsolute frames
4.seconds, 300.msabsolute time, resolved at the video’s fps
0.3.relative30 percent of the enclosing window
Time.zeroframe 0
4.seconds.to(7.seconds)a TimeRange (trims, windows)
SurfaceNotes
Video(size:, fps:, scenes:, motionDefaults:, poster:, audio:, captions:, export:, transition:)the root
Scene(duration:, children:, background:, motionDefaults:, audio:, camera:)one segment; children sit on a centered stack
Scene.centered(duration:, child:)one-child convenience
Scene.sequence(timeline:, children:)duration from a TimelineSchedule
VideoSize.square / reels / story / hd / fourKcanvas presets; story aliases reels
Transition.crossFade / slide / wipebetween-scene transitions
SurfaceNotes
widget.animate([...], anchor:, window:, defaults:)attach animations to any widget
widget.show(from:, to:)bound an element to a window
Animation.fadeIn / fadeOutopacity
Animation.slideIn / slideOut / slideFadeoffset, optionally with fade
Animation.pop / scaleInspringy scale
Animation.blurIn / blurOutblur
Animation.color(to:)color lerp, consumed by color-capable elements
Animation.gradientShift(to:)pairwise gradient lerp
Animation.maskWipe(shape:)reveal wipe
Animation.float / pulse / drift / spin / kenBurnsambient loops
Animation.from / to / fromTo / keyframes / along / custombuild your own
Stagger.each(time) / evenly(over:) / from(origin)offset multi-child targets
Repeat.forever(yoyo:) / times(n, gap:)loop inside the span
Defaults(duration:, ease:, stagger:)cascade: element over scene over video over package
Spring.gentle / snappy / bouncy, Ease.smooth / out / snappy / …timing feel
SurfaceNotes
Animation.grain / vignette / scanlines / chromatic / bloom / glitchInpost-process the rendered frame
Animation.particles(spec)deterministic field; build with Particles.confetti / snow / sparkle
Animation.parallax(depth:)scene-clock drift for parallax layers
Animation.shader(asset, uniforms:)experimental fragment shader over the element
SurfaceNotes
Text(...).animate([...])plain Flutter text plus motion
Typewriter(text, speed:, caret:)frame-driven per-glyph reveal
Counter(to:, from:, duration:, format:)frame-driven number tween, intl-formatted
Counter.currency / percentfixed-locale money and percentage presets
Image.asset / file / memory / network(url, fit:, frame:, shared:)a still, pre-resolved before frame 0
Clip.asset / network(url, trim:, audio:, fit:, shared:)an embedded video
ClipAudio.included / muteda clip’s audio policy
Chart.bar / line / area / pie / donut / scatterdata-driven charts that reveal from your data
Bars(...)a standalone bar set
Code(...) / CodeReveal(...)highlighted, typed code
Terminal(...) / TerminalChrome / TerminalLinean animated terminal session
Markdown(...)rendered Markdown
SurfaceNotes
Arrow / Connector / Calloutpointers and labels
Spotlight / Shape / LowerThird / TitleCardemphasis and titles
SurfaceNotes
Snapshot(...) / DeviceFrame(...)a Flutter subtree rasterized once in-process, painted every frame (no service needed)
Mermaid(...) / MermaidReveal(...)a diagram rasterized once (experimental, needs a SnapshotService)
WebView(...) / Html(...)a web page or HTML rasterized once (experimental, needs a SnapshotService)
SurfaceNotes
Trigger.autothe phase default
Trigger.at(time)explicit time in the window
Trigger.after(a) / Trigger.whenStarts(a)react to an Anchor
Trigger.previouschain off the previous animation
Trigger.sceneStart / Trigger.sceneEndscene boundaries
Trigger.beat(every:, track:)on the analysed beat grid of an audio track
SurfaceNotes
Background.color / gradient / radial / noise / vhspainted fills
Background.image / videopre-resolved like Image/Clip
Box(color:, size:)fractional-size rectangle; null size fills
Frame.none / rounded / card / polaroidstyled wrappers
FadeBox(opacity:, child:)render-safe opacity primitive
SurfaceNotes
Audio.music(source, volume:, fadeIn:, fadeOut:, loop:, trim:, track:)a music bed mixed under the frames
Audio.sfx(source, at:, volume:)a one-shot effect fired at a trigger
Animation.pulse(on: AudioBand.bass) / scaleY(on:)reactive motion, analysed before frame 0
Captions.fromSrt / fromVtt / wordssubtitle sources
CaptionStyle.subtitle / tikTok / karaoke, CaptionPosition.bottomThird / topThird / center / customlook and placement
SurfaceNotes
FluvieTheme(palette:, type:, motion:, child:)brand a subtree
Palette(bg:, accent:, onBg:, …), TypeScale.fromBase(base, ratio:)the tokens
context.fluvie.brand / typeread tokens at the call site
Adaptive(reels:, square:, landscape:, portrait45:)branch layout per aspect
Aspect.reels / square / landscape / portrait45aspect families
render(video, aspect:)render one definition for one aspect
SurfaceNotes
VideoTemplatea pure function of props, rendered per data row
TitleIntro / TitleIntroProps, StatHighlight / StatHighlightPropsbuilt-in templates
renderTemplate(template, props)render one props row
SurfaceNotes
Export.mp4(quality:)H.264 MP4; Quality.low / medium / high / max
Export.gif(fps:)animated GIF
Export.imageSequence()one PNG per frame
Export.transparent()WebM with an alpha channel
SurfaceNotes
FrameBuilder((ctx) => …)experimental frame-clock builder when no preset fits
Timeline() (experimental)GSAP-style builder; play / playAll / wait / label, at: takes a Trigger / label
TimelineProbe + TimelineProbeScopemount above a Video to receive its ResolvedTimeline
debugTimeline(timeline)a fixed-width text table of every animation
InspectorModel.fromTimeline(...)the inspector’s value model: motions, anchors, warnings
printVideoSpecJson(Map) (package:fluvie_cli, experimental)turn a VideoSpec into an editable Video build() snippet; pure, no model, no render