1
votes

Comment faire en sorte que TextField prenne tout l'espace vertical disponible?

TextField a la propriété maxLines , qui définit le nombre de lignes "peintes". Mais que dois-je faire lorsque je ne connais pas la valeur de cette propriété. Les écrans sont différents et je veux juste que le TextField soit étendu à son maximum verticalement.

Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          mainAxisAlignment: MainAxisAlignment.start,
          children: <Widget>[
            Expanded(
              child: TextField(
                keyboardType: TextInputType.multiline,
                maxLength: null,
                maxLines: 100,
                decoration: InputDecoration(border: OutlineInputBorder()),
              ),
            ),
            Text("My awesome app"),
)

 entrez la description de l'image ici p >

Donc, ici, je viens de créer une valeur maxLines suffisamment grande pour montrer qu'elle devient si grande qu'elle couvre le widget Texte sous-jacent. Si la valeur est petite, alors le TextField est également petit et ne prend pas tout l'espace disponible. Comment puis-je y parvenir?

J'ai vu que beaucoup de travail a été fait récemment sur TextField , qui n'a pas encore été publié: https://github.com/flutter/flutter/pull/27205 . Peut-être que ce que je veux réaliser deviendra plus facile après la sortie. Mais comment puis-je faire ça maintenant? Ou y a-t-il quelque chose de simple qui me manque dans le flutter déjà publié?


0 commentaires

3 Réponses :


-1
votes

La définition de la valeur de Lines sur 0 lui permet d'augmenter dynamiquement le nombre de lignes que vous ajoutez si vous en avez besoin. L'inconvénient est que cela signifie que le TextField commence par une hauteur de 1 ligne et augmente en hauteur à mesure que des lignes sont ajoutées.


3 commentaires

Premièrement, maxLines ne peut pas être 0. Deuxièmement, je veux qu'il soit à son maximum depuis le début. Je ne veux pas qu'il soit augmenté pendant la saisie. Et de plus, définir maxLines sur null ne l'empêche pas de grandir et de couvrir le Text sous-jacent


Mes excuses, je voulais dire lignes et non maxLines . Si vous avez essayé de définir les lignes sur 0 puis de mettre le TextField dans un `développé, cela pourrait vous donner ce que vous recherchez.


TextField n'a pas de propriété lignes : docs.flutter.io/flutter/material/TextField-class.html



0
votes

Selon la Documentation , définissez les maxLines < / code> du textField à null pour que le textField définisse sa hauteur en fonction de son contenu.


2 commentaires

ce n'est pas ce que j'ai demandé, lisez ci-dessous les commentaires sous la réponse de R.Duggan


Je vois. Excusez-moi. Quelle est votre intention en ayant le maximum d'espace disponible pour le champ de texte? Que diriez-vous de placer le TextField dans une sizeBox ou un conteneur?



0
votes

Comme mentionné dans la question, cela a été beaucoup plus facile récemment après ce PR a> a été fusionné. Vous devriez être en mesure de récupérer ce changement en utilisant la version 1.3.12 ou une version ultérieure. Consultez la documentation sur les chaînes pour savoir comment définir Flutter sur une version ultérieure.

Si vous pouvez utiliser v.> 1.3.12, faites ceci pour obtenir un champ de texte qui occupe tout l'espace vertical disponible:

TextField(
  maxLines: null,
  expands: true,
)


0 commentaires