Skip to content

FlowShimmerText sweeps a soft highlight through a label whose work is still in flight — “Searching the web…”, “Reading files…”. It is the waiting-state voice of the system, text only by design. The thinking indicator uses it for its label; tool and progress lines can take it directly.

A label in flight
FlowShimmerText(text: 'Searching the web…')

The same widget can stay in place once the work finishes — enabled: false renders plain static text in the base ink, so the line doesn’t jump when the state changes:

The same line, settled
// enabled: false renders plain static text in the base ink —
// the same widget can stay in place once the work settles.
FlowShimmerText(
enabled: false,
text: 'Searched the web',
)

The sweep’s highlight color, the text style, and the cycle duration are all overridable:

Tuning the sweep
FlowShimmerText(
text: 'Generating a slide deck…',
highlightColor: context.flowColors.primary,
style: const TextStyle(fontSize: 18),
duration: const Duration(milliseconds: 1000),
)
  • text — the label; the host owns the copy.
  • enabledfalse holds the line still in the base ink, as does the platform’s reduced-motion setting.
  • baseColor (onSurfaceMuted), highlightColor (onSurface), style, duration, textAlign — retheme the sweep without touching the global tokens.