Flutter-防京东商城项目-编写注册(2)-35

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

代码文档

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

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

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

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

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

修改两个BUG

1.第一个

 String tel = "";

在这里插入图片描述

2.第二个 回到

在这里插入图片描述

在这里插入图片描述

children: <Widget>[


//--------------------------------------------
   Container(
     child: JdText(
//--------------------------------------------    

       text: "请输入验证码",
       onChanged: (value) {
         this.code=value;
       },
     ),

//--------------------------------------------
     height: ScreenAdaper.width(100),
   ),
//--------------------------------------------   

  Positioned(

3.回到在这里插入图片描述页面添加下面的代码

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

//--------------------------------------------
import '../config/Config.dart';
import 'package:dio/dio.dart';
import 'package:fluttertoast/fluttertoast.dart';
import '../services/Storage.dart';
import 'dart:convert';
import '../tabs.dart';//引入Tabs
//--------------------------------------------

class RegisterThirdPage extends StatefulWidget {


//--------------------------------------------
  Map arguments;
//--------------------------------------------

  
  RegisterThirdPage({Key key, this.arguments}) : super(key: key);//------------------------

  _RegisterThirdPageState createState() => _RegisterThirdPageState();
}

class _RegisterThirdPageState extends State<RegisterThirdPage> {



//--------------------------------------------
  String tel;
  String code;
  String password='';
  String rpassword='';
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    this.tel = widget.arguments["tel"];
    this.code = widget.arguments["code"];
  }
  //注册
  doRegister() async {
    if (password.length < 6) {
      Fluttertoast.showToast(
        msg: '密码长度不能小于6位',
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.CENTER,
      );
    } else if (rpassword != password) {
      Fluttertoast.showToast(
        msg: '密码和确认密码不一致',
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.CENTER,
      );
    } else {
      var api = '${Config.domain}api/register';
      var response = await Dio().post(api, data: {
        "tel": this.tel,
        "code": this.code,
        "password": this.password
      });
      if (response.data["success"]) {
        //保存用户信息   
        Storage.setString('userInfo', json.encode(response.data["userinfo"]));

        //返回到根
        Navigator.of(context).pushAndRemoveUntil(
            new MaterialPageRoute(builder: (context) => new Tabs()),
            (route) => route == null);
      } else {
        Fluttertoast.showToast(
          msg: '${response.data["message"]}',
          toastLength: Toast.LENGTH_SHORT,
          gravity: ToastGravity.CENTER,
        );
      }
    }
  }
 //--------------------------------------------
 
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("用户注册-第三步"),
      ),
      body: Container(
        padding: EdgeInsets.all(ScreenAdapter.width(20)),
        child: ListView(
          children: <Widget>[
            SizedBox(height: 50),
            JdText(
              text: "请输入密码",
              password: true,
              onChanged: (value) {

//--------------------------------------------
                this.password=value;
//--------------------------------------------

                
              },
            ),
            SizedBox(height: 10),
            JdText(
              text: "请输入确认密码",
              password: true,
              onChanged: (value) {


//--------------------------------------------
                this.rpassword=value;
//--------------------------------------------



                
              },
            ),
            SizedBox(height: 20),
            JdButton(
              text: "注册",
              color: Colors.red,
              height: 74,
              cb: doRegister,//--------------------------------------------
            )
          ],
        ),
      ),
    );
  }
}

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

'/registerThird': (context,{arguments}) => RegisterThirdPage(arguments: arguments),

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

在这里插入图片描述

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

7.把这个文件拖进来在这里插入图片描述

UserServices

import '../services/Storage.dart';
import 'dart:convert';

class UserServices{
  static getUserInfo() async{
     List userinfo;
     try {
      List userInfoData = json.decode(await Storage.getString('userInfo'));
      userinfo = userInfoData;
    } catch (e) {
     userinfo = [];
    }
    return userinfo;      
  }
  static getUserLoginState() async{    
      var userInfo=await UserServices.getUserInfo();
      if(userInfo.length>0&&userInfo[0]["username"]!=""){
        return true;
      }
      return false;
  }
  static loginOut(){
    Storage.remove('userInfo');
  }
}

8.然后回到在这里插入图片描述文件里面

9.导入

import '../../services/UserServices.dart';

10.添加下面的代码

bool isLogin=false;
List userInfo=[];

@override
void initState() {
  // TODO: implement initState
  super.initState();
  this._getUserinfo();
}

_getUserinfo() async{

    var isLogin=await UserServices.getUserLoginState();      
    var userInfo=await UserServices.getUserInfo();

    setState(() {          
      this.userInfo=userInfo;
      this.isLogin=isLogin;
    });

}

11.三木运算判断是否登录

在这里插入图片描述

!this.isLogin?Expanded(//--------------------------------------------
  flex: 1,
  child: InkWell(
    onTap: () {
      Navigator.pushNamed(context, '/login');
    },
    child: Text("登录/注册", style: TextStyle(color: Colors.white)),
  ),



//--------------------------------------------
):Expanded(
  flex: 1,
  child: Column(
    mainAxisAlignment: MainAxisAlignment.center,
    crossAxisAlignment: CrossAxisAlignment.start,
    children: <Widget>[
      Text("用户名:${this.userInfo[0]["username"]}",
          style: TextStyle(
              color: Colors.white,
              fontSize: ScreenAdapter.size(32))),
      Text("普通会员",
          style: TextStyle(
              color: Colors.white,
              fontSize: ScreenAdapter.size(24))),
    ],
  ),
)
//--------------------------------------------

12.修改用户名:

写了不用写
在这里插入图片描述

Text("用户名:

//--------------------------------------------
${this.userInfo[0]["username"]
//--------------------------------------------


}",

13.编写临时退出按键

import 'package:flutter_app/widget/JDButton.dart';

JdButton(
  text: "退出登录",
  cb: (){
    UserServices.loginOut();
    this._getUserinfo();
  },
)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冯汉栩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值