在TextField中动态出现的后缀图标

问题描述 投票:1回答:1

我的目标是使用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);
});

但是sufixIcon从未出现。谁能说出正确的方法?

flutter flutter-layout
1个回答
0
投票

尝试使用状态变量来设置长度,并在内部添加侦听器函数中设置长度并检查图标可见性的长度

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
© www.soinside.com 2019 - 2024. All rights reserved.