之前看了一些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四天的初学者。