【问题标题】:Dynamically appearing suffixIcon in TextField在 TextField 中动态出现 suffixIcon
【发布时间】:2020-05-18 05:29:48
【问题描述】:

我的目标是使用 TextField 构建一个搜索框,该框在字段末尾有一个图标按钮以清除文本字段中的内容。目前我正在使用,

TextField(
   controller: _searchFieldController,
   decoration: InputDecoration(
     filled: true,
     fillColor: Colors.white,
     prefixIcon: Icon(Icons.search),
     border: OutlineInputBorder(
     borderRadius: BorderRadius.circular(10.0)),
     hintText: 'Search here...',
     hintStyle: Theme.of(context).textTheme.caption,
     suffixIcon: _searchFieldController.text.length > 0 ? IconButton(
       onPressed: () {
          _searchFieldController.clear();
       },
       icon: Icon(Icons.cancel, color: Colors.grey)
     ) : null,
  ),
),

带有以下文本编辑控制器。

final _searchFieldController = TextEditingController();

_searchFieldController.addListener(() {
    print(_searchFieldController.text.length);
});

但 suffixIcon 永远不会出现。谁能告诉我如何做到这一点?

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    尝试为长度设置一个状态变量,并在添加侦听器函数中设置长度并检查图标可见性的长度

    final _searchFieldController = TextEditingController();
    final _length = 0;
    
    _searchFieldController.addListener(() {
        setState(() => _length = _searchFieldController.text.length);
    });
    

    然后检查_length变量

    suffixIcon: _length > 0 ? IconButton(
       onPressed: () {
          _searchFieldController.clear();
       },
       icon: Icon(Icons.cancel, color: Colors.grey)
     ) : null
    

    【讨论】:

    • 感谢您的回复。在侦听器中放置 setState 后,输入的字符不会出现在 TextField 中。而且清除按钮也没有出现。
    • 尝试为文本也设置一个状态变量
    猜你喜欢
    • 2019-10-28
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多