Flutter:我可以通过设置Theme.accentColor来更改TextFormField prefixIcon的焦点颜色,但是找不到不聚焦时更改prefixIcon颜色的任何方法。
答案 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
}
让我知道是否有帮助。谢谢