Skip to main content

Examples

Properties

Required

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

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

Layout

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
Override the animation duration. Defaults to theme.durations.long.

Best Practices

  • Set useMaxWidthDuringTransition: true when a width change during the animation would move siblings.

Behavior

  • A TextStyle built inline in build restarts the animation on every rebuild, even when the string is unchanged. Use useMemoized or a const style.
  • Screen readers announce data, not the characters in motion.
  • It measures itself like a Text of the string.
  • Digits use tabular figures.
  • NeoButton, NeoToast, NeoDropdownField, and NeoBadge animate their labels with NeoFluidText.
Last modified on September 30, 2026