Flutter TextField添加controller属性,输入清空

1,952 阅读1分钟

之前看了一些Flutter的基本知识,感觉就是简单的Widget的积木搭建工程,然后就选择了一个之前开发的软件进行从0到1的Flutter开发,毕竟得学以致用吧,准备完毕,骑上我心爱的小摩托,滴~~出发了。 搭建界面了,so easy,试着输入,没问题,完美,才用了姐分钟就搭建成功了,下面添加controller,实现登录功能,添加完毕,代码如下

return Container(
  width: HYSizeFit.setRpx(400),
  height: HYSizeFit.setRpx(320),
  padding: const EdgeInsets.all(10),
  decoration: BoxDecoration(
      color: Colors.white,
      borderRadius: BorderRadius.all(Radius.circular(10.0))),
  child: ListView(
    children: [
      Image.asset(
        'assets/ic_title_top.png',
        width: HYSizeFit.setRpx(260),
        fit: BoxFit.fitWidth,
      ),
      TextField(
        controller: account,
        decoration: InputDecoration(
            hintText: '请输入账号',
            icon: Icon(
              Icons.account_box_outlined,
              color: Colors.grey,
            )),
      ),
      TextField(
        controller: pass,
        decoration: InputDecoration(
            hintText: '请输入密码',
            icon: Icon(
              Icons.work_outline_outlined,
              color: Colors.grey,
            )),
        obscureText: true,
      ),
      ),
    ],
  ),
);

肯定没问题,开始输入,纳尼,怎么输入没了,我就是简单的加了一个controller,怎么键盘消失,文字就清除了呢,没事,淡定,去问问度娘和Google吧,结果一无所获,addListener监听一切正常,开始揪头发了,终于知道为什么程序员头发少了,都是遇到问题自己揪掉的,揪完头发继续开始,一步一步开始调试,输入过程正常,那一定是哪里写错了,仔细检查,嗯???怎么在build的实现方法里定义呢,挪出去试试,正常了,为什么呢 原代码

@override Widget build(BuildContext context) {

HYSizeFit.initialize(context);
return Scaffold(
  body: Stack(
    fit: StackFit.expand,
    children: [
      Container(
        color: Colors.lightBlue,
        child: Image.asset(
          'assets/lancher.png',
          fit: BoxFit.fill,
        ),
      ),
      Center(
        child: getCenter(),
      ),
    ],
  ),
);

修改后代码 class Login extends StatelessWidget {

final TextEditingController account = TextEditingController();

final TextEditingController pass = TextEditingController();

@override Widget build(BuildContext context) {

HYSizeFit.initialize(context);
return Scaffold(
  body: Stack(
    fit: StackFit.expand,
    children: [
      Container(
        color: Colors.lightBlue,
        child: Image.asset(
          'assets/lancher.png',
          fit: BoxFit.fill,
        ),
      ),
      Center(
        child: getCenter(context,account,pass),
      ),
    ],
  ),
);

} },

至于原因,三个字,不知道,谁知道能告诉我下吗,接触Flutter四天的初学者。