25
votes

Comment agrandir un champ de texte en scintillement ressemble à une zone de texte

Lorsque je touche textField en mode landScape, je voudrais développer en plein écran aime WhatsApp

Exemple gif Quoi

            TextFormField(
              keyboardType: TextInputType.number,
              decoration: InputDecoration(
                  prefixIcon: Padding(
                    padding: EdgeInsets.all(0.0),
                    child: Icon(Icons.person,
                        size: 40.0, color: Colors.white),
                  ),
                  hintText: "Input your opinion",
                  hintStyle: TextStyle(color: Colors.white30),
                  border: OutlineInputBorder(
                      borderRadius:
                      BorderRadius.all(new Radius.circular(25.0))),
                  labelStyle: TextStyle(color: Colors.white)),
              textAlign: TextAlign.center,
              style: TextStyle(
                color: Colors.white,
                fontSize: 25.0,
              ),
              controller: host,
              validator: (value) {
                if (value.isEmpty) {
                  return "Empty value";
                }
              },
            )


2 commentaires

veuillez montrer votre code


vous pouvez essayer de définir le keyboardType: TextInputType.multiline lorsque le champ de texte est au point et que l'orientation est paysage


4 Réponses :


37
votes

Tout ce que vous avez à faire est de définir la variable maxLines lors de la création d'un TextField . J'ai ajouté le champ de texte dans un widget Carte afin que vous puissiez voir la superficie totale.

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Simple Material App"),
      ),
      body: Column(
        children: <Widget>[
          Card(
            color: Colors.grey,
            child: Padding(
              padding: EdgeInsets.all(8.0),
              child: TextField(
                maxLines: 8,
                decoration: InputDecoration.collapsed(hintText: "Enter your text here"),
              ),
            )
          )
        ],
      )
    );
  }


2 commentaires

Merci, tu as économisé mon temps.


Pas besoin de rembourrage. Maxline fonctionne bien pour moi



25
votes

Définissez maxLines sur null et keyboardType sur TextInputType.multiline comme ceci:

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


1 commentaires

Excellente solution! Comment pouvons-nous atteindre la capitalisation de phrases tout en utilisant la multiligne?



10
votes

Malheureusement, il n'y a aucun moyen de flutter, vous pouvez définir la hauteur minimale d'un TextField ou TextFormField. La meilleure façon de donner à un TextField ou à un TextFormField une taille fixe est de spécifier le nombre maximal de lignes que le Field doit prendre sans s'étendre davantage. Remarque: Cela ne limite pas la quantité de texte d'entrée, cela limite uniquement le nombre de lignes affichées.

Exemple:

                             TextFormField(
                                keyboardType: TextInputType.multiline,
                                maxLines: 8,
                                maxLength: 1000,

                              ),

Cela limitera la taille du champ à 8 lignes, mais peut prendre jusqu'à 1000 caractères. J'espère que cela aidera quelqu'un.


0 commentaires

0
votes

L'ensemble se expands: true

Expanded(
  child: TextField(
    maxLines: null,
    expands: true,
  ),
)

OU

Si vous l'utilisez dans une Column , utilisez:

TextField(
  maxLines: null,
  expands: true, 
  keyboardType: TextInputType.multiline,
)


2 commentaires

J'utilise ceci dans la colonne, mais le hintText s'aligne au milieu. Comment dois-je l'aligner sur le dessus?


@DheerajAvvari Je ne parviens pas à reproduire ce problème, cela fonctionne très bien. Pouvez-vous me montrer votre code (reproductible minimal)?