欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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) {
          },
        ),

效果图:
Flutter 遇到问题:TextField清空字符串,TextEditingController问题
看着就很奇怪,然后通过我长达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();方法

来看看效果图吧:
Flutter 遇到问题:TextField清空字符串,TextEditingController问题
如果对TextField不熟悉的,请点击Flutter StatefluWidget与基础组件(1.2),在这篇中我有对TextField的介绍

相关标签: Flutter遇到问题