Flutter: как сделать TextField с HintText, но без подчеркивания?

Вот что я пытаюсь сделать:

enter image description here

В документах Flutter для текстовых полей (https://flutter.io/text-input/) говорится, что вы можете удалить подчеркивание, передав null значение декорации. Тем не менее, это также избавляет от текста подсказки.

Я не хочу подчеркивать, сфокусировано ли текстовое поле или нет.

ОБНОВЛЕНИЕ: очевидно, это можно легко сделать с помощью

new InputDecoration.collapsed(...),

который держит подсказку, не рисуя границы.

Ответ 1

Сделай это так:

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

или если вам нужны другие вещи, такие как значок, установите границу с помощью InputBorder.none

InputDecoration(
    border: InputBorder.none,
    hintText: 'Username',
  ),
),

Ответ 2

изменить сфокусированную границу на ноль

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

Ответ 3

Вот дополнительный ответ, который показывает более полный код:

enter image description here

  Container(
    decoration: BoxDecoration(
      color: Colors.tealAccent,
      borderRadius: BorderRadius.all(Radius.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),
      ),
    ),
  ),

Примечание:

  • Темный фон (код не показан) - Colors.teal.
  • У InputDecoration также есть свойства filled и fillColor, но я не мог получить для них angular радиус, поэтому вместо этого я использовал контейнер.