Как изменить цвет фона виджета TextFiled при фокусировке - PullRequest
0 голосов
/ 13 января 2020

У меня есть виджет TextField, который по умолчанию имеет красный цвет фона. Я хочу изменить цвет фона на синий, когда TextFiled сфокусирован. Но я не могу этого сделать.

Есть три относительных свойства цвета, которые я пробовал.

filled: true,
fillColor: Colors.red,
focusColor: Colors.blue,

Результат только заполнен, имеет значение true, fillColor сработал, и focusColor никогда не работает. Можете ли вы сказать мне, что делать?

1 Ответ

3 голосов
/ 13 января 2020

Вам нужно использовать FocusNode в TextField и переменную цвета, чтобы изменить цвет:

Объявления

FocusNode _textFieldFocus = FocusNode();
Color _color = Colors.red;

@override
void initState() {
  _textFieldFocus.addListener((){
    if(_textFieldFocus.hasFocus){
      setState(() {
        _color = Colors.blue;
      });
    }else{
      setState(() {
        _color = Colors.red;
      });
    }
  });
  super.initState();
}

Виджет

TextField(
  decoration: InputDecoration(
    fillColor: _color,
    filled: true
  ),
  focusNode: _textFieldFocus,
),
...