Flutter: як зробити TextField за допомогою HintText, але не підкреслити?


116

Це те, що я намагаюся зробити:

введіть тут опис зображення

У документах Flutter для текстових полів ( https://flutter.io/text-input/ ) зазначено, що ви можете видалити підкреслення, перейшовши nullдо декору. Однак це також позбавляється від тексту підказки.

Я не хочу, щоб підкреслювалося, чи текстове поле зосереджене чи ні.

ОНОВЛЕННЯ: оновлена ​​прийнята відповідь для відображення змін у Flutter SDK станом на квітень 2020 року.

Відповіді:


79

Не вказана вище відповідь буде працювати для нового flutter sdk, оскільки після інтеграції підтримки веб-та настільних ПК потрібно вказати індивідуально, як це

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),
  )

232

Зробіть так:

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

або якщо вам потрібні інші речі, такі як значок, встановіть межу InputBorder.none

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

Чи можна це зробити без імпорту materialпакета? тобто для Cupertinoтеми?
kosiara - Бартош Косаржицький

Я хотів би уникнути: InputDecoration' can't be assigned to the parameter type 'BoxDecoration'помилка введення
kosiara - Bartosz Kosarzycki

13

змінити зосереджену межу на жодну

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

12

Ось додаткова відповідь, яка показує деякий повний код:

введіть тут опис зображення

  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),
      ),
    ),
  ),

Примітки:

  • Темний фон (код не показаний) є Colors.teal.
  • InputDecorationтакож має filledта fillColorвластивість, але я не міг змусити їх мати кутовий радіус, тому я використав контейнер замість цього.

3

Я не знайшов жодної іншої відповіді радіус кордону, ви можете просто зробити це так, не вклавшись Container

  TextField(
    decoration: InputDecoration(
      border: OutlineInputBorder(
        borderSide: BorderSide.none,
        borderRadius: BorderRadius.circular(20),
      ),
    ),
  );

-1

Я використовував TextFieldflutter control.Я отримав введені користувачем дані, використовуючи методи нижче.

onChanged:(value){
}

-2
decoration: InputDecoration(
 border:OutLineInputBorder(
 borderSide:BorderSide.none
 bordeRadius: BordeRadius.circular(20.0)
 )
)

Яка різниця між цією відповіддю та @E. Відповідь ВС від місяця тому?
Джеремі Кейні

Ви хочете чогось нового?
СР Кешав

2
Якщо відповідь вже надана, не потрібно її надсилати ще раз. Це лише додасть шуму майбутнім читачам, оскільки їм потрібно сортувати декілька подібних відповідей. В майбутньому, як тільки ви придбаєте трохи більше репутації, ви зможете відхилити наявні відповіді; це кращий спосіб перевірки підходу та підтвердження того, що рішення працює.
Джеремі Кейні

1
Слід зазначити, що іноді дописувачі все- таки публікують подібну пораду, якщо вони мають інший спосіб її пояснення або хочуть додати значно більше деталей. Це абсолютно добре. Проблема тут полягає в тому, що ти, здається, надаєш ту саму відповідь, але з меншою кількістю деталей, тому це не дуже сприяє потоці.
Джеремі Кейні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.