Estoy creando una aplicación Flutter. Hice el diseño así.
Mi campo de formulario TextFormField para alturas de correo electrónico y contraseña es pequeño. Quiero que sea del mismo tamaño que el botón.
final email = TextFormField(
keyboardType: TextInputType.emailAddress,
autofocus: false,
initialValue: 'sathyabaman@gmail.com',
style: new TextStyle(fontWeight: FontWeight.normal, color: Colors.white),
decoration: InputDecoration(
hintText: 'Email',
contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(32.0)
),
),
);
¿Cuál es la sintaxis para la altura en el campo de formulario de texto?
ajay kumar
Simplemente ajuste el contentPadding en InputDecoration.
final email = TextFormField(
keyboardType: TextInputType.emailAddress,
autofocus: false,
initialValue: 'sathyabaman@gmail.com',
style: new TextStyle(fontWeight: FontWeight.normal, color: Colors.white),
decoration: InputDecoration(
hintText: 'Email',
contentPadding: const EdgeInsets.symmetric(vertical: 25.0, horizontal: 10.0),
border: OutlineInputBorder(borderRadius: BorderRadius.circular(32.0)),
),
);
-
Quiero disminuir su altura a una altura menor que la predeterminada, pero no funciona. ¿Por qué?
– Sokheang Khun
25 de diciembre de 2019 a las 9:40
-
¿Cómo podemos hacer que el relleno de contenido esté en el centro en el campo de formulario de texto de entrada?
– Umair
8 de enero de 2020 a las 9:51
-
@Sokheang Khun utilizo valores negativos para disminuir el relleno, pero no estoy seguro de si esta es una forma práctica de hacerlo
– Suri
10 de junio de 2020 a las 4:59
-
@SokheangKhun, ¿ha encontrado alguna respuesta a esto?
– Bijender Singh Shekhawat
17 de marzo a las 12:23
Puede cambiar la altura cambiando el valor de minLines, solo intente esto
TextFormField(
keyboardType: TextInputType.multiline,
controller: _opTextController,
decoration: InputDecoration(
isDense: true,
border: OutlineInputBorder(
borderSide: BorderSide(color: Colors.black)
)
),
maxLines: 5,
minLines: 3,
// controller: cpfcontroller,
)
-
Tu respuesta no está clara. Proporcione una descripción para su código.
– Momoro
30 de abril de 2020 a las 21:23
-
Oye, @Momoro, puedes usar este código si no quieres pasar una altura estática a tu TextFormField si minLines es 1 y maxlines es 2, entonces se verá una sola línea TextFormField y su altura aumentará dinámicamente mientras el usuario escribe más palabras en el campo. Su altura se incrementará hasta 2 líneas porque maxLines = 2 si inicialmente desea mostrar un TextFormField más grande, luego aumente minLines. si todavía no está claro por favor hágamelo saber
– naman kashyap
21 de agosto de 2020 a las 14:57
Utilice estas dos líneas para controlar TextFormField
Altura interior InputDecoration
.
isDense: true,
contentPadding: EdgeInsets.fromLTRB(10, 10, 10, 0),
Ejemplo completo
Material(
elevation: 4,
shadowColor: Colors.blue,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
child: Padding(
padding: const EdgeInsets.only(left: 12),
child: TextFormField(
controller: searchProvider.searchController,
keyboardType: TextInputType.text,
decoration: InputDecoration(
hintText: 'hintText',
isDense: true, // important line
contentPadding: EdgeInsets.fromLTRB(10, 10, 10, 0),// control your hints text size
hintStyle: TextStyle(letterSpacing: 2, color: Colors.black54, fontWeight: FontWeight.bold),
fillColor: Colors.white30 ,
filled: true,
border: OutlineInputBorder(borderRadius: BorderRadius.circular(30), borderSide: BorderSide.none)),
),
),
),
-
alguien sabe que es
isDense
para– Diana
16 de febrero de 2022 a las 14:47
-
isDence es si el [InputDecorator.child] es parte de una forma densa (es decir, usa menos espacio vertical). según la documentación de flutter
–Ismael Mavor Raines
30 de marzo a las 10:31
Naj
Selecciona el expands
atributo en TextFormField
ser true
entonces pon TextFormField
en un SizedBox
con un height
SizedBox(
height: 40.0,
child: TextFormField(
keyboardType: TextInputType.emailAddress,
autofocus: false,
expands: true, // Setting this attribute to true does the trick
initialValue: 'sathyabaman@gmail.com',
style: TextStyle(fontWeight: FontWeight.normal, color: Colors.white),
decoration: InputDecoration(
hintText: 'Email',
contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(32.0)
),
),
),
)
Puede usar este código para personalizar su TextFormField
new SizedBox(
width: 200.0,
height: 300.0,
child: const Card(child: const Text('Hello World!')),
)
-
El
const Cart(...)
debiera sernew TextFormField(...)
¿bien?– Günter Zöchbauer
25 de mayo de 2018 a las 6:54
-
Puedes reemplazar
Card
niño con tuTextFormField
en lugar deText('Hello World!')
. Se muestra en respuesta.– himangi
25 de mayo de 2018 a las 6:56
-
use double.infinity en el valor de ancho para obtener un ancho dinámico 🙂
– shodiqul muzaki
18/09/2018 a las 23:50
-
No funcionó, ¿Podemos darle altura a los campos de texto de otra manera?
– Umair
18 de mayo de 2020 a las 10:37
Existe otra alternativa a la adición de relleno extra permanente para cubrir el errorText
– lo que probablemente estropearía el proyecto original de muchos diseñadores.
Podrías crear una versión modificada del fuentes TextFormField
.
Para lograr precisamente eso, puede:
- Copie y pegue todo el contenido en el fuentes
TextFormField
. - Renombra tu personalizado
TextFormField
solo para evitar conflictos de nombres con el original.- Probablemente también debería cambiar el nombre de la clase de estado interno.
- En VS Code, puede usar Control + H para reemplazar
TextFormField
por decir,TextFormFieldWithErrorTextOption
.
- Agregar otro parámetro a la
TextFormField
constructor de (abajo esta línea), decir,errorTextPresent
:// `true` is the current implicit default, i.e., showing the `errorText` bool errorTextPresent = true
- Cambiar el inicialización de la decoración para el interior
TextField
:- De:
decoration: effectiveDecoration.copyWith(field.errorText)
- A:
decoration: effectiveDecoration.copyWith( errorText: errorTextPresent ? field.errorText : null)
- De:
- Luego, puede usar su nuevo
TextFormField
de manera similar a cómo usa cualquierTextFormField
:TextFormFieldWithErrorTextOption( errorTextPresent: false, // `false` will disable the `errorText` ... ),
-
El
const Cart(...)
debiera sernew TextFormField(...)
¿bien?– Günter Zöchbauer
25 de mayo de 2018 a las 6:54
-
Puedes reemplazar
Card
niño con tuTextFormField
en lugar deText('Hello World!')
. Se muestra en respuesta.– himangi
25 de mayo de 2018 a las 6:56
-
use double.infinity en el valor de ancho para obtener un ancho dinámico 🙂
– shodiqul muzaki
18/09/2018 a las 23:50
-
No funcionó, ¿Podemos darle altura a los campos de texto de otra manera?
– Umair
18 de mayo de 2020 a las 10:37
policíasencarretera
Captura de pantalla:
Código:
Necesitas usar un SizedBox
y TextField.maxLines
propiedad.
@override
Widget build(BuildContext context) {
final height = 100.0;
return Scaffold(
body: SizedBox( // <--- SizedBox
height: height,
child: TextField(
cursorColor: Colors.red,
maxLines: height ~/ 20, // <--- maxLines
decoration: InputDecoration(
filled: true,
hintText: 'Hint text',
fillColor: Colors.grey,
),
),
),
);
}
puedes usar
SizedBox
propiedad para cambiar el ancho y la altura– Anbu Karthik
25 de mayo de 2018 a las 6:52
Si desea agregar varias líneas, use
maxLines: 5
– ensueño_ss
15 de enero de 2020 a las 12:59