Skip to main content

Documentation Index

Fetch the complete documentation index at: https://neo.tvk.company/llms.txt

Use this file to discover all available pages before exploring further.

Examples

NeoFluidText(
  label.value,
  style: theme.textStyles.header2,
),

Properties

Required

data
String
required
The string to display. When this value changes, each character animates out from the old string and in from the new one with staggered scale, slide, and blur motion.

Content

style
TextStyle
Text style for the rendered string. Merges with DefaultTextStyle — omitting this uses the ambient style.
maxLines
int
Maximum number of lines to render. Mirrors the Text widget’s maxLines parameter.
overflow
TextOverflow
How to handle text that exceeds maxLines or the available width. Defaults to .clip.
softWrap
bool
Whether to wrap text at soft line breaks. Defaults to true.
textAlign
TextAlign
Horizontal alignment of the text within its bounding box.
textDirection
TextDirection
Reading direction. Defaults to the ambient Directionality.

Layout

useMaxWidthDuringTransition
bool
default:"false"
When true, the widget holds the wider of the old and new text widths during the animation, preventing layout jumps when surrounding content is sensitive to size changes. When false (default), the width interpolates smoothly from old to new.

Styling

duration
Duration
Override the animation duration. Defaults to theme.durations.long.

Best Practices

  • Stable style reference: If you compute a TextStyle in build, make sure it is stable between builds when the text hasn’t changed, otherwise the widget will restart the transition on every rebuild. Use useMemoized or a const style.
  • Semantic label: NeoFluidText wraps its content in a Semantics widget with label: data, so screen readers announce the final string rather than individual characters animating.
  • Width stability: Use useMaxWidthDuringTransition: true inside fixed-height containers where a momentary width change would cause sibling widgets to shift.

Integration Notes

  • NeoFluidText uses a custom RenderObject to measure intrinsic sizes from the actual text layout, matching Text widget sizing exactly.
  • NeoButton, NeoToast, NeoDropdownField, and NeoBadge use NeoFluidText internally for their labels, so label copy changes animate automatically without any extra work.
Last modified on May 10, 2026