Container
Mise en page
Engine\Native\Container est l'analogue natif du widget HTML Container.php : une boîte optionnellement colorée, arrondie et bordée, avec padding, enveloppant un enfant unique. Une largeur/hauteur fixe l'emporte toujours sur la taille du contenu (contrainte stricte sur cet axe, comme le Container de Flutter) ; sans taille explicite, la boîte épouse son enfant (padding compris), dans la limite de ce que le parent autorise. Sans enfant ni taille, elle s'étend aux contraintes reçues plutôt que de s'effondrer à zéro.
Exemple
<?php
use Engine\Native\Container;
use Engine\Native\EdgeInsets;
use Engine\Color;
$card = new Container(
child: null,
width: 200.0,
height: 120.0,
background: Color::white(),
radius: 12.0,
borderColor: Color::gray(200),
borderWidth: 1.0,
elevation: 2.0,
padding: EdgeInsets::all(16.0),
);Une carte blanche de 200×120px, arrondie à 12px, avec une fine bordure grise et une légère élévation (ombre).
Constructeur
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| child | ?Widget | null | Enfant unique, enveloppé en interne dans un Padding. |
| width | ?float | null | Largeur fixe ; si fournie, impose une contrainte stricte. |
| height | ?float | null | Hauteur fixe ; si fournie, impose une contrainte stricte. |
| background | ?Color | null | Couleur de fond peinte via canvas->rect(). |
| radius | float | 0.0 | Rayon des coins arrondis. |
| borderColor | ?Color | null | Couleur de la bordure. |
| borderWidth | float | 0.0 | Épaisseur de la bordure. |
| elevation | float | 0.0 | Élévation (ombre portée). |
| gradientFrom | ?Color | null | Couleur de départ d'un dégradé optionnel. |
| gradientTo | ?Color | null | Couleur de fin d'un dégradé optionnel. |
| padding | EdgeInsets | EdgeInsets(0,0,0,0) | Marges intérieures appliquées autour de l'enfant. |
À savoir. La boîte peinte (fond/bordure) utilise toujours la taille finale et contrainte, jamais la taille « naturelle » calculée à partir du contenu : un parent
Flexiblepeut imposer une allocation stricte au conteneur même sans width/height explicites, et le fond doit alors remplir exactement cette allocation.