Animated
Animation
Engine\Native\Animated est le wrapper d'animation implicite général — la famille AnimatedContainer/AnimatedOpacity/AnimatedPositioned de Flutter unifiée en une seule primitive, puisqu'elles reviennent toutes à la même question : "le sous-arbre sous cette $key avait-il un aspect différent au rendu précédent ? si oui, glisser vers le nouvel état plutôt que de sauter brutalement." Animated partage le même mécanisme sous-jacent que Hero (Canvas::beginHero()/endHero(), les heroRegions, le vol basé sur une Matrix dans drawHeroTransition()) : une transition Hero à travers une navigation et un changement de couleur/taille sur le même écran sont la même primitive côté Kotlin, seulement utilisée dans des contextes différents.
Exemple
<?php
use Engine\Native\Animated;
use Engine\Native\Container;
use Engine\Native\Curve;
use Engine\Color;
$badge = new Animated(
child: new Container(
width: $isActive ? 120.0 : 80.0,
height: 32.0,
background: $isActive ? Color::green(600) : Color::gray(300),
radius: 16.0,
),
key: 'status-badge',
curve: Curve::EASE_IN_OUT,
);Tant que la clé status-badge reste stable entre deux rendus, un changement de largeur/couleur (déclenché ici par $isActive) est animé en douceur plutôt que d'apparaître d'un coup au rendu suivant.
Constructeur
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| child | Widget | — | Le sous-arbre dont l'état visuel doit être animé quand il change. |
| key | string | — | Identifiant stable entre les rendus pour le même widget logique (id produit, clé d'élément de liste…). |
| curve | ?Curve | null | Courbe d'interpolation appliquée à la transition (voir Curve). |
À savoir.
$keydoit être unique parmi les éléments animés en même temps — deux widgets différents partageant la même clé seraient volés l'un vers l'autre, exactement le même piège que les tags dupliqués duHerode Flutter.