flutter发送验证码功能
程序员文章站
2022-04-28 17:45:58
一个发送验证码的需求:包括限制文本框输入长度和只允许输入数字
按惯例 先上图:
class mybody extends statefulwidget {...
一个发送验证码的需求:包括限制文本框输入长度和只允许输入数字
按惯例 先上图:
class mybody extends statefulwidget { @override _mybodystate createstate() => _mybodystate(); } class _mybodystate extends state<mybody> { bool isbuttonenable=true; //按钮状态 是否可点击 string buttontext='发送验证码'; //初始文本 int count=60; //初始倒计时时间 timer timer; //倒计时的计时器 texteditingcontroller mcontroller=texteditingcontroller(); void _buttonclicklisten(){ setstate(() { if(isbuttonenable){ //当按钮可点击时 isbuttonenable=false; //按钮状态标记 _inittimer(); return null; //返回null按钮禁止点击 }else{ //当按钮不可点击时 // debugprint('false'); return null; //返回null按钮禁止点击 } }); } void _inittimer(){ timer = new timer.periodic(duration(seconds: 1), (timer timer) { count--; setstate(() { if(count==0){ timer.cancel(); //倒计时结束取消定时器 isbuttonenable=true; //按钮可点击 count=60; //重置时间 buttontext='发送验证码'; //重置按钮文本 }else{ buttontext='重新发送($count)'; //更新文本内容 } }); }); } @override void dispose() { timer?.cancel(); //销毁计时器 timer=null; super.dispose(); } @override widget build(buildcontext context) { return container( child: column( // mainaxisalignment: mainaxisalignment.center, children: <widget>[ container( color: colors.white, padding: edgeinsets.only(left: 10,right: 10), child: row( mainaxisalignment: mainaxisalignment.spacebetween, // crossaxisalignment: crossaxisalignment.center, crossaxisalignment: crossaxisalignment.baseline, textbaseline: textbaseline.ideographic, children: <widget>[ text('验证码',style: textstyle(fontsize: 13,color: color(0xff333333)),), expanded( child: padding(padding: edgeinsets.only(left: 15,right: 15,top: 15), child: textformfield( maxlines: 1, onsaved: (value) { }, controller: mcontroller, textalign: textalign.left, inputformatters: [whitelistingtextinputformatter.digitsonly,lengthlimitingtextinputformatter(6)], decoration: inputdecoration( hinttext: ('填写验证码'), contentpadding: edgeinsets.only(top: -5,bottom: 0), hintstyle: textstyle( color: color(0xff999999), fontsize: 13, ), alignlabelwithhint: true, border: outlineinputborder(borderside: borderside.none), ), ),), ), container( width: 120, child: flatbutton( disabledcolor: colors.grey.withopacity(0.1), //按钮禁用时的颜色 disabledtextcolor: colors.white, //按钮禁用时的文本颜色 textcolor:isbuttonenable?colors.white:colors.black.withopacity(0.2), //文本颜色 color: isbuttonenable?color(0xff44c5fe):colors.grey.withopacity(0.1), //按钮的颜色 splashcolor: isbuttonenable?colors.white.withopacity(0.1):colors.transparent, shape: stadiumborder(side: borderside.none), onpressed: (){ setstate(() { _buttonclicklisten(); });}, // child: text('重新发送 (${secondsy})'), child: text('$buttontext',style: textstyle(fontsize: 13,),), ), ), ], ), ), container( width: double.infinity, height: 45, margin: edgeinsets.only(top: 50,left: 10,right: 10), child: raisedbutton( onpressed: () { debugprint('${mcontroller.text}'); }, shape: stadiumborder(side: borderside.none), color: color(0xff44c5fe), child: text( '下一步', style: textstyle(color: colors.white,fontsize: 15), ), ), ), ], ), ); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 去剪头发
下一篇: Android仿微信多人音视频通话界面
推荐阅读
-
PHP发送邮件功能整合到TP3.2.3
-
Laravel8 使用图形验证码做登录功能的实现
-
springboot整合shiro多验证登录功能的实现(账号密码登录和使用手机验证码登录)
-
怎么鉴别虚假的手机号发送验证码注册,有一些那个平台可以生成虚假手机号接收验证码比如以前的一片云
-
推荐个功能齐全的发送PHP邮件类
-
php发送验证码后的验证码一般存放在哪里的呢?
-
用户注册功能:输入验证码后点击空处,自动核对输入的验证码是否正确。如果正确,在验证码框框后面显示一个绿色的对勾
-
功能齐全的PHP发送邮件类代码附详细说明_php技巧
-
使用python 3实现发送邮件功能
-
ThinkPHP实现带验证码的文件上传功能实例