flutter - 将默认 TextFormField 图标颜色从灰色更改为任何颜色,但在选择时显示原色

标签 flutter dart flutter-layout

我想更改 TextFormField 图标的默认颜色,这也会在选择时发生变化。改变颜色的方法很少,但没有一个对我有用。

1. Set icon color

当直接更改图标颜色时,如下所示,选择时图标颜色不会改变,下面是相同的代码和屏幕截图,当选择或未选择字段时显示红色。

     TextFormField(
        maxLength: 15,
        decoration: InputDecoration(
          labelText: "USER NAME",
          prefixIcon: IconTheme(data: IconThemeData(
            color: Colors.redAccent
          ), child: Icon(Icons.email,))
        ),
        onSaved: (username) => _username = username,
      ),

enter image description here

2. Leave it default

未选择字段时将显示灰色,选择字段时将显示原色。下面是相同的屏幕截图。在这里,我想将图标的颜色从灰色更改为红色,并希望在选择时显示原色。

enter image description here

NOTE:- It will be good if we can do this using theme

最佳答案

下面的代码将生成您需要管理 TextFormFields 焦点的 FocusNodes ,并在焦点从 1 改变时执行 setState领域到另一个领域。我们只是创建一个焦点节点列表,监听每个节点的变化并将它们分配给一个字段:

List<FocusNode> _focusNodes = [
  FocusNode(),
  FocusNode(),
  FocusNode(),
  FocusNode(),
];

@override
void initState() {
  _focusNodes.forEach((node){
    node.addListener(() {
      setState(() {});
    });
  });
  super.initState();
}

@override
Widget build(BuildContext context) {
  return Column(
    children: <Widget>[
      TextFormField(
        focusNode: _focusNodes[0],
        decoration: InputDecoration(
          prefixIcon: Icon(Icons.email,
            color: _focusNodes[0].hasFocus ? Theme.of(context).accentColor : Colors.grey,
          ),
        ),
      ),
      TextFormField(
        focusNode: _focusNodes[1],
        decoration: InputDecoration(
          prefixIcon: Icon(Icons.email,
            color: _focusNodes[1].hasFocus ? Theme.of(context).accentColor : Colors.grey,
          ),
        ),
      ),
      TextFormField(
        focusNode: _focusNodes[2],
        decoration: InputDecoration(
          prefixIcon: Icon(Icons.email,
            color: _focusNodes[2].hasFocus ? Theme.of(context).accentColor : Colors.grey,
          ),
        ),
      ),
    ],
  );
}

关于flutter - 将默认 TextFormField 图标颜色从灰色更改为任何颜色,但在选择时显示原色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60258739/

相关文章:

Flutter 在 List<Widget> 中查找 Widget

dart - 字符串比较不适用于从网络抓取中收到的文本

flutter - 如何仅添加一个 BottomNavigationBarItem

json - 如何通过传递变量(参数)获取api数据?

testing - 如何测试 Flutter 小部件的固有大小

flutter - 如何将 CSS float 等小部件与 Flutter UI 对齐?

dart - Flutter-WebViewScaffold后面的Drawer菜单

android - flutter - 使用抽屉子部件 onTap 更改子部件

javascript - Dart 是否支持使用现有的 JavaScript 库?

flutter - 如何在下拉式 flutter 中设置初始默认值