Flutter-防京东商城项目-用户登录 退出登录 事件广播更新状态-36

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

代码文档

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

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

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

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

本章效果:
请添加图片描述

在login页面添加两个属性。
在这里插入图片描述

1.创建两个属性

String username = '';
String password = '';

2.去到下面进行赋值
在这里插入图片描述

SizedBox(height: 30),
JdText(
  text: "请输入用户名",
  onChanged: (value) {
    // print(value);
    this.username=value;//--------------------------------------------
  },
),
SizedBox(height: 10),
JdText(
  text: "请输入密码",
  password: true,
  onChanged: (value) {
    // print(value);
    this.password=value;//--------------------------------------------
  },
),

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

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

doLogin() async{
  RegExp reg = new RegExp(r"^1\d{10}$");
  if (!reg.hasMatch(this.username)) {
     Fluttertoast.showToast(
      msg: '手机号格式不对',
      toastLength: Toast.LENGTH_SHORT,
      gravity: ToastGravity.CENTER,
    );
  } else if(password.length<6){
    Fluttertoast.showToast(
      msg: '密码不正确',
      toastLength: Toast.LENGTH_SHORT,
      gravity: ToastGravity.CENTER,
    );
  }else{
    var api = '${Config.domain}api/doLogin';
    var response = await Dio().post(api, data: {"username": this.username,"password":this.password});
    if (response.data["success"]) {
      print(response.data);
      //保存用户信息
      Storage.setString('userInfo', json.encode(response.data["userinfo"]));

      Navigator.pop(context);
      
    } else {
      Fluttertoast.showToast(
        msg: '${response.data["message"]}',
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.CENTER,
      );
    }

  }
}

3.1然后运用登录的方法
在这里插入图片描述

JdButton(
  text:"登录",
  color: Colors.red,
  height: 74,
  cb: doLogin,//--------------------------------------------
)

4.通过实践广播的方式,登录完成回到我的页面刷新UI
回到在这里插入图片描述页面。在文件里面添加下面的代码

//用户中心广播
class UserEvent{
  String str;
  UserEvent(String str){
    this.str=str;
  }
}

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

import '../services/EventBus.dart';

6.添加下面的代码
在这里插入图片描述

//监听登录页面销毁的事件
dispose(){
  super.dispose();
  eventBus.fire(new UserEvent('登录成功...'));
}

7.在在这里插入图片描述也要引入实践广播

import '../../services/EventBus.dart';

添加下面的代码
在这里插入图片描述

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



//--------------------------------------------
  //监听登录页面改变的事件
  eventBus.on<UserEvent>().listen((event) {
    print(event.str);
    this._getUserinfo();
  });
//--------------------------------------------



}

8.优化退出登录按钮 拉到最下面的退出登录按键替换下面的代码
现在替换成盘算是否登录显示按键。
旧的代码
在这里插入图片描述
替换代码

this.isLogin
    ? Container(
        padding: EdgeInsets.all(20),
        child: JdButton(
          color: Colors.red,
          text: "退出登录",
          cb: () {
            UserServices.loginOut();//    写了不用写
            this._getUserinfo();
          },
        ),
      )
    : Text("")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冯汉栩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值