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"),
)
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é?
3 Réponses :
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.
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
Selon la Documentation , définissez les maxLines < / code> du textField à null pour que le textField définisse sa hauteur en fonction de son contenu.
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?
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, )