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
- Basic Usage
- With Formatter
- Face-Value Mode


Properties
Required
The numeric value to display. When this changes, each digit rolls through intermediate values (in
continuous mode) or directly to the new face value.Content
Converts
value to a display string. Supports locale-aware separators (both . and , as decimal points). Pass a top-level or static function to keep its identity stable across builds and avoid discarding cached transitions.Defaults to value.toString().Text style applied to all digits and decorators. Merges with
DefaultTextStyle.Horizontal alignment of the counter within its bounding box.
Reading direction. Defaults to the ambient
Directionality.Styling
Override the animation duration. Defaults to
theme.durations.long.When
true (default), digits roll through every intermediate step like an odometer — e.g. going from 100 to 200 spins the tens and units through all values. When false, only digits whose face value actually changes animate, jumping directly to the target digit.Fraction of the line height used as vertical padding on each edge for the fade-out gradient. Higher values give a taller fade zone above and below the rolling digits. Defaults to
0.25.Best Practices
- Stable formatter: The
formatterfunction is used as auseMemoizeddependency. Passing an inline lambda on every build forces a new transition on every rebuild even whenvaluehasn’t changed. Always use a top-level,static, oruseMemoized-wrapped function. - Integer vs decimal:
NeoFluidCounterauto-detects decimal separators (.and,) in the formatted string and handles the odometer independently for integer and fractional digit groups. - Continuous vs face-value: Use
continuous: true(default) for counters like scores or progress values where the rolling motion reinforces the sense of change. Usecontinuous: falsefor values that jump arbitrarily (e.g. a live price feed) where rolling through every intermediate step would be distracting.
Integration Notes
NeoFluidCounteruses tabular-figures (FontFeature.tabularFigures()) automatically so digit columns don’t shift width during the roll animation.- Like
NeoFluidText, the widget uses a customRenderObjectfor intrinsic size measurement, so it sizes itself exactly like aTextwidget would for the displayed value. - The semantic label is set to the formatted string so screen readers announce the current value correctly.





