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

代码文档

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='';@overridevoid initState() {// TODO: implement initStatesuper.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,);}}}//--------------------------------------------@overrideWidget 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 initStatesuper.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();},
)

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

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

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

  2. 39 Flutter仿京东商城项目 收货地址列表、增加 修改收货地址布局、弹出省市区选择器...

    加群452892873 下载对应39课文件,运行方法,建好项目,直接替换lib目录 pubspec.yaml city_pickers: ^0.1.22 AddressAdd.dart import ...

  3. Flutter-防京东商城项目-创建商品数据模型 、请求Api接口渲染热门商品 推荐商品 获取数据然后模型赋值-06

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

  4. Flutter-防京东商城项目-签名验证 增加收货地址、显示收货地址 事件广播-41

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

  5. Flutter-防京东商城项目-订单列表、订单详情页面布局-45

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

  6. Flutter-防京东商城项目-提交订单、去支付页面制作-44

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

  7. Flutter-防京东商城项目-状态管理 多页面数据共享-23

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

  8. Github上开源仿京东商城项目-安装部署(二)

    Github上开源仿京东商城项目-安装部署(二) 2.用IntelliJ IDEA 2020打开项目,选择SuperMarket目录, 将会自动安装相关项目的依赖包,这个时间大约1个半小时. 3.安装 ...

  9. 京东商城项目实战(3)------京东商城注册页面

    项目实战:京东商城(1)----京东商城首页 京东商城(2)----京东商城登录页面 京东商城(3)----京东商城注册页面 网页效果: 网页源代码(入需其他源代码,请在评论下方留言): <!D ...

最新文章

  1. iOS 一些基础的方法
  2. angularjs通过ng-change和watch两种方式实现对表单输入改变的监控
  3. 第十周项目3-血型统计
  4. 记录gulp报错The following tasks did not complete: cssmin或类似任务
  5. Jboss AS7 的一些配置备忘
  6. 外设驱动库开发笔记2:AD8400系列数字电位器驱动
  7. 阿里的 RocketMQ 如何让双十一峰值之下0故障
  8. 用CSS使DIV水平居中
  9. ZFS 学习(转载)
  10. 拓端tecdat|R语言在不同样本量下的Little‘s MCAR检验
  11. exe4j打包后 提示 couldn't load main class
  12. [转]应该被记住的天才,写在图灵诞辰100周年
  13. 云台球型摄像机市场深度研究分析报告
  14. 关于混合app 开发框架Ionic
  15. vue canvas —— 将两张图片合成一张
  16. 40个经典的社交心理学现象
  17. httpwatch初级使用
  18. 运营之光2我的互联网运营方法论与自白
  19. 清除Chrome浏览器下默认浅黄色背景(保存密码时出现)
  20. 零基础新手学习算法Leetcode刷题指南

热门文章

  1. 国内外4款主流ERP系统评测,哪款最好用?
  2. Deeplab系列算法
  3. mt管理器错误信息java_MT管理器_MT管理器手机版_MT管理器清爽版_易玩网
  4. 如何将品牌融入UI设计中?优漫动游
  5. html+js文字合成语音代码 支持在线试听播放和转换成mp3格式下载到本地 单文件 便携版 在线AI文字转换音频速度超快
  6. 【FPGA零基础学习之旅#4】定时器设计与蜂鸣器驱动
  7. 西门子PLC电池涂布机浆料输送系统新能源项目_S7-1200
  8. 小程序switch内部加上文字_Switch每日情报:国行版《健身环大冒险》微信小程序上线...
  9. 手把手 php mysql_Ubuntu 12.04 搭建PHP环境(MySQL+PHP+Apache环境)手把手教程 含
  10. Luogu P4343 [SHOI2015]自动刷题机