AnimatedText class

Texto animado que divide el string en partes y las anima en cascada.

Soporta múltiples tipos de animación (AnimationType) y modos de división (SplitType). La cascada se logra aumentando 100ms por elemento respecto a duration, generando un efecto secuencial (1, 2, 3, ...).

Cómo funciona

  • El texto se separa según splitType: char, word o line.
  • Cada trozo se anima con TweenAnimationBuilder, usando curve y duration
    • un offset incremental de 100ms por índice para la cascada.
  • Si autoPlay es true, la animación arranca al montar el widget. Para control manual, usa un GlobalKey<AnimatedTextState> y llama a AnimatedTextState.play.

Consejos de UX

  • AnimationType.fade es el más limpio y performante.
  • AnimationType.blur luce brutal, pero implica más coste (post-procesado).
  • Con fuentes grandes o mucho contenido, considera reducir blurFactor y/o el número de elementos (usa word o line en vez de char).

Ejemplo básico

AnimatedText(
  text: 'Hello World',
  splitType: SplitType.char,
  animationType: AnimationType.fade,
  curve: Curves.easeOut,
  duration: const Duration(milliseconds: 500),
  fontSize: 32,
  autoPlay: true,
)

Ejemplo con control manual

final textKey = GlobalKey<AnimatedTextState>();

AnimatedText(
  key: textKey,
  text: 'Animated Text',
  autoPlay: false,
  animationType: AnimationType.rotate,
  splitType: SplitType.word,
);

// Lanzar animación más tarde:
textKey.currentState?.play();

Ejemplo por líneas (subtítulos/versos)

AnimatedText(
  text: 'Primera línea\nSegunda línea\nTercera línea',
  splitType: SplitType.line,
  animationType: AnimationType.rotateVertical,
  duration: const Duration(milliseconds: 350),
  fontSize: 20,
)

Notas

  • El widget usa Wrap para disposición fluida; si usas SplitType.line se inserta un \n tras cada trozo para conservar saltos.
  • Para reejecutar la cascada, llama a AnimatedTextState.play.
  • blur usa ImageFiltered (puede afectar rendimiento en dispositivos modestos).
Inheritance

Constructors

AnimatedText({Key? key, String text = 'Animated Text', SplitType splitType = SplitType.char, Curve curve = Curves.bounceIn, double fontSize = 64, AnimationType animationType = AnimationType.fade, Duration duration = const Duration(milliseconds: 500), bool autoPlay = true, double blurFactor = 100})
Crea un AnimatedText.
const

Properties

animationType → AnimationType
Tipo de animación a aplicar.
final
autoPlay → bool
Si la animación debe iniciarse automáticamente.
final
blurFactor → double
Factor de intensidad del desenfoque (solo para AnimationType.blur).
final
curve → Curve
Curva de animación aplicada a cada elemento.
final
duration → Duration
Duración base de la animación para cada elemento.
final
fontSize → double
Tamaño de la fuente del texto.
final
hashCode → int
The hash code for this object.
no setterinherited
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
splitType → SplitType
Tipo de división del texto (caracteres, palabras o líneas).
final
text → String
El texto a animar.
final

Methods

createElement() → StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → State<AnimatedText>
Creates the mutable state for this widget at a given location in the tree.
override
debugDescribeChildren() → List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) → String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String
Returns a one-line detailed description of the object.
inherited
toStringShort() → String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited