Flexible
Mise en page
Engine\Native\Flexible enveloppe un enfant avec un facteur flex, à réserver aux enfants directs d'un Flex — le pendant natif d'Expanded/Flexible de Flutter. Techniquement la classe implémente Widget (son layout() et son paint() délèguent tel quels à l'enfant, sans logique propre), mais elle n'a de sens que reconnue spécialement par Flex : c'est ce dernier qui détecte les enfants instanceof Flexible, additionne leurs facteurs, et leur redistribue l'espace principal restant après avoir mesuré les enfants ordinaires. Un enfant non enveloppé garde sa taille intrinsèque et un flex implicite de 0.
Exemple
<?php
use Engine\Native\Flex;
use Engine\Native\Flexible;
use Engine\Native\Container;
use Engine\Native\Axis;
use Engine\Color;
$row = new Flex(Axis::HORIZONTAL, [
new Flexible(new Container(background: Color::blue(400)), flex: 1),
new Flexible(new Container(background: Color::blue(600)), flex: 2),
]);L'espace horizontal restant après mesure des enfants ordinaires (ici aucun) est réparti entre les deux blocs bleus au tiers/deux-tiers, proportionnellement à leur facteur flex (1 et 2).
Constructeur
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| child | Widget | — | Enfant dont l'espace principal sera déterminé par Flex. |
| flex | int | 1 | Facteur de répartition de l'espace restant, relatif aux autres Flexible du même Flex. |
À savoir. En dehors d'un
Flex,Flexiblese comporte comme un simple pass-through transparent (layout/paint délégués tel quels) : c'est uniquementFlex::layout()qui donne un sens à son facteurflexen le détectant viainstanceof Flexible.