首页 > 解决方案 > Flutter TextFormField 带有动态后缀图标

问题描述

目的是显示/隐藏清除 Flutter TextFormField 上的字段的 suffixIcon。只有在框中有文本时它才应该可见。

该字段如下所示:

TextFormField(                  
  controller: _usernameController,
  decoration: InputDecoration(
    labelText: 'Username',
    suffixIcon: usernameNotEmpty == true ? IconButton(
      onPressed: () {
        _usernameController.clear();
      },
      icon: Icon(Icons.cancel, color: Colors.grey)
    ) : null
  ),                  
)

事件侦听器如下所示:

var usernameNotEmpty;
_usernameController.addListener(() {
   usernameNotEmpty = _usernameController.text.length > 0 ? true : false; 
   print(_usernameController.text);
});

所以实时更新的文本确实出现在控制台中。但suffixIcon从未显示。由于 TextFormField 没有onChange事件,如何suffixIcon显示/隐藏?

标签: flutter

解决方案


清理和工作:

_usernameController.addListener(() {
  setState(() {}); 
});

TextFormField(                  
  controller: _usernameController,
  decoration: InputDecoration(
    labelText: 'Username',
    suffixIcon: _usernameController.text.length > 0 ? IconButton(
      onPressed: () {
        _usernameController.clear();
      },
      icon: Icon(Icons.cancel, color: Colors.grey)
    ) : null
  ),
)

推荐阅读