186 votes

Comment modifier la hauteur et la largeur d'un champ de texte ?

Comment personnaliser TextField 's width y height ?

291voto

Ale_lipa Points 795

Pour ajuster la largeur, vous pourriez envelopper votre TextField avec un Container widget, comme ça :

Container(              
  width: 100.0,
  child: TextField()
)

Je ne suis pas vraiment sûr de ce que vous cherchez quand il s'agit de la hauteur du TextField mais vous pourriez certainement jeter un coup d'oeil à la TextStyle avec lequel vous pouvez manipuler les éléments suivants fontSize et/ou height

Container(              
  width: 100.0,
  child: TextField(                                 
    style: TextStyle(
      fontSize: 40.0,
      height: 2.0,
      color: Colors.black                  
    )
  )
)

N'oubliez pas que le height dans le TextStyle est un multiplicateur de la taille de la police, conformément aux commentaires sur la propriété elle-même :

La hauteur de cette zone de texte, en tant que multiple de la taille de la police.

Lorsque [height] est nul ou omis, la hauteur de la ligne sera déterminée par les métriques de la police directement, qui peuvent différer de fontSize. Lorsque [height] n'est pas nul, la hauteur de ligne de l'empan de texte sera un multiple de [fontSize] et sera exactement de fontSize * height pixels logiques grands.

Enfin, vous pouvez aussi jeter un coup d'œil à la page d'accueil du site Web de la Commission européenne. decoration propriété de vous TextField ce qui vous donne beaucoup de possibilités

EDITAR: Comment modifier l'espacement/la marge interne de l'écran d'accueil ? TextField

Vous pouvez jouer avec le InputDecoration et le decoration de l TextField . Par exemple, vous pourriez faire quelque chose comme ceci :

TextField(                                
    decoration: const InputDecoration(
        contentPadding: const EdgeInsets.symmetric(vertical: 40.0),
    )
)

3 votes

Oui, je peux mettre à jour les attributs height/fontSize mais il y a un remplissage par défaut dans le champ de texte qui s'ajoute à la hauteur et à la largeur supplémentaires, comment le personnaliser ?

2 votes

Vous pouvez utiliser le decoration à ces fins. Réglez-le sur null et tous les styles de base auront disparu.

1 votes

Merci, ça supprime complètement tout. Mais tout ce dont j'ai besoin, c'est de personnaliser les marges par défaut en haut et en bas dans le champ de texte.

162voto

Jay Dhamsaniya Points 731

Je pense que vous voulez changer le rembourrage/marge interne de la TextField .

Vous pouvez le faire en ajoutant isDense: true y contentPadding: EdgeInsets.all(8) comme suit :

Container(
  padding: EdgeInsets.all(12),
  child: Column(
    children: <Widget>[
      TextField(
        decoration: InputDecoration(
          border: OutlineInputBorder(),
          labelText: 'Default TextField',
        ),
      ),
      SizedBox(height: 16,),
      TextField(
        decoration: InputDecoration(
          border: OutlineInputBorder(),
          labelText: 'Densed TextField',
          isDense: true,                      // Added this
        ),
      ),
      SizedBox(height: 16,),
      TextField(
        decoration: InputDecoration(
          border: OutlineInputBorder(),
          labelText: 'Even Densed TextFiled',
          isDense: true,                      // Added this
          contentPadding: EdgeInsets.all(8),  // Added this
        ),
      )
    ],
  ),
)

Il sera affiché comme :

How to update flutter TextField's height and width / Inner Padding?

0 votes

J'ai besoin que la taille de la zone de texte soit augmentée. L'augmentation du conteneur me permet de voir de grandes quantités de données saisies.

7 votes

L'option isDense fonctionne pour moi pour réduire la hauteur du champ de texte. Merci @Jay Dhamsaniya

65voto

CopsOnRoad Points 4705

Capture d'écran :

enter image description here


Widget _buildTextField() {
  final maxLines = 5;

  return Container(
    margin: EdgeInsets.all(12),
    height: maxLines * 24.0,
    child: TextField(
      maxLines: maxLines,
      decoration: InputDecoration(
        hintText: "Enter a message",
        fillColor: Colors.grey[300],
        filled: true,
      ),
    ),
  );
}

4 votes

Merci. maxLines : maxlines a fonctionné. Je peux maintenant voir de grandes quantités de données saisies.

0 votes

Oui, c'est ce que je cherchais, maxLines a parfaitement fonctionné pour mon cas !

20voto

alexalejandroem Points 79

Cette réponse fonctionne, mais il y aura des conflits lorsque le champ de saisie est en état d'erreur. Pour une meilleure approche et un meilleur contrôle, vous pouvez utiliser ceci.

InputDecoration(
    isCollapsed: true,
    contentPadding: EdgeInsets.all(9),
)

12voto

Pius Geek Points 62

Enveloppe TextField sur SizedBox pour la largeur

SizedBox(
  height: 40,
  width: 150,
  child: TextField(),
)

0 votes

Cela a fonctionné. Merci

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X