Skip to content

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
<?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ètreTypeDéfautDescription
childWidget—Enfant dont l'espace principal sera déterminé par Flex.
flexint1Facteur de répartition de l'espace restant, relatif aux autres Flexible du même Flex.

À savoir. En dehors d'un Flex, Flexible se comporte comme un simple pass-through transparent (layout/paint délégués tel quels) : c'est uniquement Flex::layout() qui donne un sens à son facteur flex en le détectant via instanceof Flexible.

Voir aussi ​

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