Как изменить цвет подчеркивания textField?

Я новичок в трепетании и дротике. В настоящее время использую это в одном из моих личных проектов.

enter image description here

Во всех моих формах подчеркивание textField отображается синим цветом. Я хочу изменить это на другой цвет. Кусок кода, который я использую, похож на...

new TextField(
  controller: this._emailController,
  decoration: new InputDecoration(
      hintText: "Enter your email",
      labelText: "Email",
      labelStyle: new TextStyle(
          color: const Color(0xFF424242)
      )
  ),

),

Не могу понять, как этого добиться.

Примечание: я знаю, что здесь есть похожий вопрос. Изменить подчеркивание TextField во флаттере. Но и там это еще не полностью решено. Кроме того, еще одна ссылка, похожая на мою, здесь: Изменение цвета нижней строки EditText с помощью appcompat v7, но на самом деле это относится к разработке под Android с использованием JAVA, а не DART (трепетание), которое я использую для разработки приложений для Android. Поэтому, пожалуйста, не запутайтесь в этих ссылках.

Ответ 1

Логический ответ был бы использовать InputBorder, в частности, в UnderlineInputDecorator, и передать его к inputdecorator как границы. Однако все, что это делает, это сообщает InputDecorator, следует ли использовать подчеркивание или что-то еще, что вы укажете.

Фактический цвет основан на теме - из источника:

Color _getActiveColor(ThemeData themeData) {
  if (isFocused) {
    switch (themeData.brightness) {
      case Brightness.dark:
        return themeData.accentColor;
      case Brightness.light:
        return themeData.primaryColor;
    }
  }
  return themeData.hintColor;
}

Поэтому, чтобы изменить цвет, сделайте что-то вроде этого (или укажите тему для всего приложения):

new Theme(
  data: new ThemeData(
    primaryColor: Colors.red,
    accentColor: Colors.orange,
    hintColor: Colors.green
  ),
  child: new TextField(
    decoration: new InputDecoration(
      hintText: "Enter your email",
      labelText: "Email",
      labelStyle: new TextStyle(color: const Color(0xFF424242)),
      border: new UnderlineInputBorder(
        borderSide: new BorderSide(
          color: Colors.red
        )
      )
    ),
  ),
),

Ответ 2

Просто использовал -:

decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),

меня устраивает :)

Ответ 3

    decoration: new InputDecoration(
                      labelText: "Email",
                      suffixIcon: Icon(Icons.email),
                      labelStyle: TextStyle(color: Colors.red),
                      enabledBorder: new UnderlineInputBorder(
                          borderSide: new BorderSide(color: Colors.red)
   )
)

Ответ 4

нужно изменить три границы.

  enabledBorder: OutlineInputBorder(
            borderSide: BorderSide(color: _type.color),
          ),
  focusedBorder: OutlineInputBorder(
        borderSide: BorderSide(color: _type.color),
  ),
  border:
    OutlineInputBorder(borderSide: BorderSide(color: _type.color)),

Ответ 5

Вы можете использовать свойство ThemeData inputDecorationTheme чтобы изменить цвет всего приложения:

MaterialApp(
  ...
  theme: ThemeData(
    inputDecorationTheme: InputDecorationTheme(
      focusedBorder: UnderlineInputBorder(
        borderSide: BorderSide(color: Colors.red)
      )
    )
  )
)