Flutter:如何更改TextFormField prefixIcon而不通过ThemeData聚焦颜色?

时间:2019-09-19 10:08:42

标签: flutter dart

Flutter:我可以通过设置Theme.accentColor来更改TextFormField prefixIcon的焦点颜色,但是找不到不聚焦时更改prefixIcon颜色的任何方法。

1 个答案:

答案 0 :(得分:0)

使用FocusNode Class,它将跟踪您何时专注于特定的TextFormField

注意:如果您有多个课程,请确保将不同的FocusNode对象分配给不同的TextFormField()

这是您的解决方案:

FocusNode _focusNode;

@override
void dispose() {
  super.dispose();
  _focusNode.dispose();
}

@override
void initState() {
  super.initState();
  _focusNode = new FocusNode();
  _focusNode.addListener(_onOnFocusNodeEvent);
}

_onOnFocusNodeEvent() {
  setState(() {
    // Re-renders
  });
}

TextFormField(
  focusNode: _focusNode
  decoration: InputDecoration(
     border: InputBorder.none,
     prefixIcon: Padding(
       padding: EdgeInsets.all(0.0),
       child: Icon(
         Icons.search,
         color: this.getPrefixIconColor(),
       ) // icon is 48px widget.
     )
   )
)

//This will change the color of the icon based upon the focus on the field
Color getPrefixIconColor(){
  return _focusNode.hasFocus ? Colors.black : Colors.grey
}

让我知道是否有帮助。谢谢