web-dev-qa-db-fra.com

Existe-t-il un moyen de modifier dynamiquement les maxLines de Flutter TextField?

J'ai un TextField comme celui-ci:

new Flexible(
    fit: FlexFit.loose,
    child: new Container(
        alignment: FractionalOffset.topLeft,
        child: new TextField(
            decoration: new InputDecoration(
                  hintText: 'Add a note',
            ),
            maxLines: 1,
            onChanged: (value) => _showSaveOptions(value),
        ),
    ),
),

Je voudrais que mon TextField commence avec maxLines mis à 1, mais en tapant, j'aimerais que maxLines augmente, de sorte que tout le texte reste sur la page et que je n'ai pas pour faire défiler vers le haut. Cependant, je ne veux pas non plus commencer avec maxLines défini sur 5 ou 10, car le TextField vide prend plus d'espace que nécessaire. Un exemple du comportement que je veux implémenter se trouve dans l'option Texte à réponse longue dans Google Forms, où il commence par une ligne: enter image description here et se développe au fur et à mesure que je tape: enter image description here

J'ai envisagé de définir maxLines sur un compteur qui s'incrémente chaque fois que l'utilisateur accède à une nouvelle ligne, mais comment puis-je déterminer quand l'utilisateur a rempli une ligne?

11
Mary

Flutter était en retard sur la prise en charge multiligne dans TextField. Après qu'un problème a été soulevé à ce sujet, la fonction multiligne a été ajoutée dans la version .0.16 .

Assurez-vous de mettre à niveau flutter vers la dernière version. Pour obtenir une utilisation TextField multiligne:

new TextField(
    maxLines: null,
    keyboardType: TextInputType.multiline,
) 

J'espère que cela vous a aidé!

29
Hemanth Raj

son aspect comme une zone de texte. vous pouvez essayer avec maxLines

maxLines: 8

TextField(
        maxLines: 8,
        decoration: InputDecoration(hintText: "Enter your text here", border: OutlineInputBorder(),
        labelText: 'Post Body'),
    ),
0
AH Rasel