Flutter-防京东商城项目-编写注册(1)-34

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。

代码文档

Flutter防京东商城源码(1-10)链接

Flutter防京东商城源码(11-20)链接

Flutter防京东商城源码(21-30)链接

Flutter防京东商城源码(31-46)链接

注册获取到的验证码在打印台上面可以收到。
在这里插入图片描述
gif图的效果是34和35的代码来的。
请添加图片描述

回到在这里插入图片描述页面编写下面的代码
1.导入

import '../config/Config.dart';
import 'package:dio/dio.dart';
//提示框
import 'package:fluttertoast/fluttertoast.dart';

2.添加下面的方法

String tel;
sendCode() async {
  RegExp reg = new RegExp(r"^1\d{10}$");
  if (reg.hasMatch(this.tel)) {
    var api = '${Config.domain}api/sendCode';
    var response = await Dio().post(api, data: {"tel": this.tel});
    if (response.data["success"]) {

      print(response);  //演示期间服务器直接返回  给手机发送的验证码

      Navigator.pushNamed(context, '/registerSecond',arguments: {
        "tel":this.tel
      });

    } else {
      Fluttertoast.showToast(
        msg: '${response.data["message"]}',
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.CENTER,
      );
    }
  } else {
    Fluttertoast.showToast(
      msg: '手机号格式不对',
      toastLength: Toast.LENGTH_SHORT,
      gravity: ToastGravity.CENTER,
    );
  }
}

3.修改下面的内容 两个地方而已

this.tel = value;

sendCode

在这里插入图片描述
回到页面在这里插入图片描述
4.导入

import 'dart:async';   //Timer定时器需要引入
import '../config/Config.dart';
import 'package:dio/dio.dart';
import 'package:fluttertoast/fluttertoast.dart';

5添加下面的代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Map arguments;

this.arguments



  String tel;
  bool sendCodeBtn=false;
  int seconds=10;
  String code;


  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    this.tel=widget.arguments['tel'];
    this._showTimer();
  }

  //倒计时
  _showTimer(){
    Timer t;
    t=Timer.periodic(Duration(milliseconds:1000), (timer){
      setState(() {
        this.seconds--;
      });
      if(this.seconds==0){
        t.cancel(); //清除定时器
        setState(() {
          this.sendCodeBtn=true;
        });

      }
    });

  }
  //重新发送验证码
  sendCode() async {
    setState(() {
      this.sendCodeBtn=false;
      this.seconds=10;
      this._showTimer();
    });
    var api = '${Config.domain}api/sendCode';
    var response = await Dio().post(api, data: {"tel": this.tel});
    if (response.data["success"]) {
      print(response);  //演示期间服务器直接返回  给手机发送的验证码
    }
  }
  //验证验证码

  validateCode() async{
    var api = '${Config.domain}api/validateCode';
    var response = await Dio().post(api, data: {"tel": this.tel,"code": this.code});
    if (response.data["success"]) {
      Navigator.pushNamed(context, '/registerThird',arguments: {
        "tel":this.tel,
        "code":this.code
      });
    }else{
      Fluttertoast.showToast(
        msg: '${response.data["message"]}',
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.CENTER,
      );
    }
  }

//--------------------------------------------------------------------------

Text("验证码已经发送到了您的${this.tel}手机,请输入${this.tel}手机号收到的验证码"),
//--------------------------------------------------------------------------
this.code=value;

//--------------------------------------------------------------------------
this.sendCodeBtn?RaisedButton(
  child: Text('重新发送'),
  onPressed: this.sendCode,
):RaisedButton(
  child: Text('${this.seconds}秒后重发'),
  onPressed: (){

  },
),

//--------------------------------------------------------------------------
this.validateCode,

5.回到路由界面在这里插入图片描述添加下面的代码

'/registerSecond': (context,{arguments}) => RegisterSecondPage(arguments: arguments),
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯汉栩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值