Skip to content

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
<?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ètreTypeDéfautDescription
childWidget—Le sous-arbre dont l'état visuel doit être animé quand il change.
keystring—Identifiant stable entre les rendus pour le même widget logique (id produit, clé d'élément de liste…).
curve?CurvenullCourbe d'interpolation appliquée à la transition (voir Curve).

À savoir. $key doit ê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 du Hero de Flutter.

Voir aussi ​

PhpNitro est un produit FINANFA TECH — Publié sous licence MIT.