Flutter: ¿cómo hacer un TextField con HintText pero sin subrayado?

116

Esto es lo que intento hacer:

ingrese la descripción de la imagen aquí

En los documentos de Flutter para campos de texto ( https://flutter.io/text-input/ ), dice que puede eliminar el subrayado pasando nulla la decoración. Sin embargo, eso también elimina el texto de sugerencia.

No quiero subrayar si el campo de texto está enfocado o no.

ACTUALIZACIÓN: respuesta aceptada actualizada para reflejar los cambios en Flutter SDK a partir de abril de 2020.

TeabaggingSanta
fuente

Respuestas:

78

Ninguna de las respuestas anteriores funcionará para el nuevo flutter sdk, ya que después de la integración del soporte web y de escritorio, debe especificar individualmente como este

TextFormField(
    cursorColor: Colors.black,
    keyboardType: inputType,
    decoration: new InputDecoration(
        border: InputBorder.none,
        focusedBorder: InputBorder.none,
        enabledBorder: InputBorder.none,
        errorBorder: InputBorder.none,
        disabledBorder: InputBorder.none,
        contentPadding:
            EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
        hintText: sLabel),
  )
sourav pandit
fuente
232

Hazlo asi:

TextField(
  decoration: new InputDecoration.collapsed(
    hintText: 'Username'
  ),
),

o si necesita otras cosas como el icono, establezca el borde con InputBorder.none

InputDecoration(
    border: InputBorder.none,
    hintText: 'Username',
  ),
),
Hecho Baruna
fuente
¿Es posible hacerlo sin importar el materialpaquete? es decir, por Cupertinotema?
kosiara - Bartosz Kosarzycki
Me gustaría evitar: InputDecoration' can't be assigned to the parameter type 'BoxDecoration'error de tipo
kosiara - Bartosz Kosarzycki
13

cambiar el borde enfocado a ninguno

TextField(
      decoration: new InputDecoration(
          border: InputBorder.none,
          focusedBorder: InputBorder.none,
          contentPadding: EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
          hintText: 'Subject'
      ),
    ),
Sarthak Singhal
fuente
12

Aquí hay una respuesta complementaria que muestra un código más completo:

ingrese la descripción de la imagen aquí

  Container(
    decoration: BoxDecoration(
      color: Colors.tealAccent,
      borderRadius:  BorderRadius.circular(32),
    ),
    child: TextField(
      decoration: InputDecoration(
        hintStyle: TextStyle(fontSize: 17),
        hintText: 'Search your trips',
        suffixIcon: Icon(Icons.search),
        border: InputBorder.none,
        contentPadding: EdgeInsets.all(20),
      ),
    ),
  ),

Notas:

  • El fondo oscuro (código no mostrado) es Colors.teal.
  • InputDecorationtambién tiene una propiedad filledy fillColor, pero no pude conseguir que tuvieran un radio de esquina, así que usé un contenedor en su lugar.
Suragch
fuente
3

Encontré que ninguna otra respuesta da un radio de borde, simplemente puede hacerlo así, no anidado Container

  TextField(
    decoration: InputDecoration(
      border: OutlineInputBorder(
        borderSide: BorderSide.none,
        borderRadius: BorderRadius.circular(20),
      ),
    ),
  );
E. Sol
fuente
-1

Estaba usando el TextFieldcontrol de aleteo Obtuve que el usuario ingresara la entrada usando los métodos siguientes.

onChanged:(value){
}
Sachin Mishra
fuente
-2
decoration: InputDecoration(
 border:OutLineInputBorder(
 borderSide:BorderSide.none
 bordeRadius: BordeRadius.circular(20.0)
 )
)
SR Keshav
fuente
¿Cuál es la diferencia entre esta respuesta y @E? ¿La respuesta de Sun de hace un mes?
Jeremy Caney
¿Quieres algo nuevo?
SR Keshav
2
Si ya se ha proporcionado una respuesta, no es necesario volver a enviarla. Hacerlo solo agrega ruido para los futuros lectores, ya que necesitan clasificar múltiples respuestas similares. En el futuro, una vez que haya ganado un poco más de reputación, podrá votar las respuestas existentes; esa es la forma preferida de validar un enfoque y afirmar que la solución funciona.
Jeremy Caney
1
Debo señalar que, en ocasiones, los colaboradores aún publicarán un consejo similar si tienen una forma diferente de explicarlo o si desean agregar muchos más detalles. Eso está totalmente bien. El problema aquí es que parece que está proporcionando la misma respuesta, pero con menos detalles, por lo que no contribuye mucho al hilo.
Jeremy Caney