如何在 Flutter TextField Widget 中添加“X”以清除搜索框?

Posted

技术标签:

【中文标题】如何在 Flutter TextField Widget 中添加“X”以清除搜索框?【英文标题】:How to I put an "X" to clear the search box in my Flutter TextField Widget? 【发布时间】:2020-09-26 04:22:51 【问题描述】:

以下代码提供了用于搜索的 TextField,但是,我希望在右侧清除“X”,以便用户可以清除搜索而无需退格。

TextField(
            decoration: InputDecoration(
                contentPadding: EdgeInsets.all(16.0),
                prefixIcon: Icon(
                  Icons.search,
                  color: Colors.white,
                ),
                //Placeholder potential X for clearing search
                /*suffix: IconButton(
                    icon: Icon(Icons.clear), onPressed: () => TODO),*/
                hintText: 'Search by name',
                hintStyle: TextStyle(
                    fontWeight: FontWeight.w500, color: Colors.white)),
            onChanged: (string) 
              setState(() 
                filterAssets = assets
                    .where((test) => (test.name
                        .toLowerCase()
                        .contains(string.toLowerCase())))
                    .toList();
              );
            ,
          ),

【问题讨论】:

【参考方案1】:

给它一个textController..

还有onPressed你可以清除它..


TextField(
            controller: textController,
            decoration: InputDecoration(
                contentPadding: EdgeInsets.all(16.0),
                prefixIcon: Icon(
                  Icons.search,
                  color: Colors.white,
                ),
                //Placeholder potential X for clearing search
                suffix: IconButton(
                    icon: Icon(Icons.clear), onPressed: () => textController.clear()),
                hintText: 'Search by name',
                hintStyle: TextStyle(
                    fontWeight: FontWeight.w500, color: Colors.white)),
            onChanged: (string) 
              setState(() 
                filterAssets = assets
                    .where((test) => (test.name
                        .toLowerCase()
                        .contains(string.toLowerCase())))
                    .toList();
              );
            ,
          ),

希望它能解决你的问题..

【讨论】:

以上是关于如何在 Flutter TextField Widget 中添加“X”以清除搜索框?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter TextField:如何在右侧添加图标

Flutter中如何同步两个TextField

(Flutter) 如何在不按“完成”的情况下自动监听 TextField 中的变化?

如何在 Container 中垂直扩展 TextField 以覆盖 Flutter 中的所有可用空间

如何在 Flutter 中隐藏 TextField 底部的字母计数器

如何在 Flutter 测试中模拟 TextField 上的按 ENTER