Skip to content

Cheatsheet

The whole public surface on one page. Everything here works today. Preview and render a composition file:

Terminal window
fluvie preview ./lib/my_video.dart # live, hot-reloading
fluvie render ./lib/my_video.dart --out my_video.mp4 # the file

From a clone of this repo, render a lesson by its key, because the gallery keeps a registry:

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.cut / crossFade / wipe / zoom / slidebetween-scene transitions

Every preset, with exactly what it does and its defaults, is in Animation presets.

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 / slideFadeIn / slideFadeOutoffset, optionally with fade
Animation.pop / scaleIn / scaleOutspringy scale
Animation.blurIn / blurOutblur
Animation.color(to:)color lerp, consumed by color-capable elements
Animation.gradientShift(to:)pairwise gradient lerp
Animation.maskWipeIn(shape:) / maskWipeOut(shape:)reveal or hide with a 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 / stiff, Ease.smooth / out / snappy / …timing feel
SurfaceNotes
Animation.grain / vignette / scanlines / chromatic / bloom / glitchIn / glitchOutpost-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:, reveal:, 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.whenEnds(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
PhotoFrame.none / rounded / card / polaroidstyled wrappers
FadeBox(opacity:, child:) (package:fluvie/rendering.dart)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:) (package:fluvie/rendering.dart)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) (package:fluvie/rendering.dart)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
CommandNotes
fluvie init [--name] [--dir] [--force]scaffold a project: a composition file, assets/, a pubspec
fluvie preview <file.dart> [-d <device>]live preview with hot reload; defaults to this desktop
fluvie render <file.dart> --out <file>capture and encode; --entry, --cache, --aspect, --quality, --format, --poster, --frames
fluvie render <key> --out <file>the legacy registry path; --no-cache bypasses the cache
fluvie listthe render keys of a project that still uses a registry
fluvie ffmpeg <install|path|status|uninstall>manage the FFmpeg build Fluvie downloads

A composition file exposes a top-level Video build(); --entry <name> names another.

SurfaceNotes
renderVideo(video:, outDir:, pumpWidget:, pumpFrame:, setViewSize:) (package:fluvie/rendering.dart)the one capture entry a host drives; derives geometry, media, audio, captions from the Video
runAsyncDirectly, SetViewSize, ShellRunAsyncthe host seams renderVideo takes
parseAspect / parseQuality / parseExportFormat / parsePosterTimeCLI define strings to typed arguments
writeRenderProgress(file, completed, total)the progress file a supervising process polls
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