Flutter 遇到问题:TextField清空字符串,TextEditingController问题
程序员文章站
2022-03-11 18:06:41
...
今天写代码练习的时候突然想删除TextFiled上面的问题,结果死活删不掉,搜也寥寥无几,在这里写个笔记也供大家参考~
遇到问题
TextEditingController没有反应,而且会一直刷新TextFiled使文字一直赋值不上,先来看看效果吧:
TextEditingController _textcontroller;
TextField(
controller: _textcontroller = TextEditingController(),
decoration: InputDecoration(
hintText: "请输入存储值",
suffixIcon: IconButton(
icon: Icon(Icons.delete),
onPressed: (){
setState(() {
_textcontroller?.clear();
});
},
)
),
onChanged: (value) {
},
),
效果图:
看着就很奇怪,然后通过我长达10分钟的思考以及百度找到了出错的问题
问题就出在TextEditingController()上,因为我每次输入的时候每次都其实会在内部刷新TextField,然后每次刷新的时候都会重新创建TextEditingController(),所以我只要让TextEditingController()创建一次即可了
在来看看更改后的代码吧:
final TextEditingController _textcontroller = TextEditingController();
TextField(
controller: _textcontroller ,
decoration: InputDecoration(
hintText: "请输入存储值",
suffixIcon: IconButton(
icon: Icon(Icons.delete),
onPressed: (){
setState(() {
_textcontroller.clear();
});
},
)
),
onChanged: (value) {
},
),
没错,就是使用final修饰一下就好啦,然后点击后面的垃圾桶就可以删除,删除是调用的_textcontroller.clear();方法
来看看效果图吧:
如果对TextField不熟悉的,请点击Flutter StatefluWidget与基础组件(1.2),在这篇中我有对TextField的介绍