web-dev-qa-db-fra.com

Flutter - manière correcte de créer une boîte qui commence à minHeight et devient maxHeight

Je souhaite commencer par un conteneur dont la taille minimale est maximale (si son contenu augmente lorsque l'utilisateur ajoute du contenu) à une taille maximale, puis arrêtez-vous.

Le widget correct pour cela semble être ConstrainedBox, comme ceci:

new ConstrainedBox(
  constraints: new BoxConstraints(
    minHeight: 35.0,
    maxHeight: 60.0,
  ),
  child: ...child with growing content (has default height 25.0)...
),

cependant, cela démarre la boîte à la hauteur maximale.

J'ai essayé d'utiliser hasBoundedHeight, mais je n'arrive pas à construire la syntaxe correcte ni à trouver un exemple dans la documentation.

Quel est le meilleur moyen de faire fonctionner la boîte comme décrit?

20
Deborah

Il n'y a pas de notion de "Commence à partir de la taille max/min".

Le problème est que ContrainedBox n’ajoute que des contraintes à son enfant. Mais au final, il ne choisit pas une taille.

Si vous voulez que votre enfant atteigne minSize, il doit alors pas dépenser. Qui se traduit par not ayant une largeur/hauteur de double.INFINITY. Le fait est que double.INFINITY est la valeur par défaut de nombreux widgets, y compris Container.

D'autre part, certains widgets tels que DecoratedBox ont une taille par défaut de 0. Ce qui signifie que ce code:

return new ConstrainedBox(
  constraints: new BoxConstraints(
    minHeight: 5.0,
    minWidth: 5.0,
    maxHeight: 30.0,
    maxWidth: 30.0,
  ),
  child: new DecoratedBox(
    decoration: new BoxDecoration(color: Colors.red),
  ),
);

Rendra un carré rouge 5.0 * 5.0.

41
Rémi Rousselet