Flutter-防京东商城项目-修改默认收货地址 显示默认收货地址-42

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

代码文档

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

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

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

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

效果:
请添加图片描述
1.回到在这里插入图片描述页面里面。添加下面的代码
导入

import '../services/UserServices.dart';
import '../services/SignServices.dart';
import '../config/Config.dart';
import 'package:dio/dio.dart';
import '../services/EventBus.dart';

添加地方1.

List _addressList=[];
@override
void initState() {
  super.initState();
  this._getDefaultAddress();

   //监听广播
  eventBus.on<CheckOutEvent>().listen((event) {
    print(event.str);
    this._getDefaultAddress();
  });
}

_getDefaultAddress() async {
  List userinfo = await UserServices.getUserInfo();

  // print('1234');
  var tempJson = {
    "uid": userinfo[0]["_id"],     
    "salt": userinfo[0]["salt"]
  };

  var sign = SignServices.getSign(tempJson);
 
  var api = '${Config.domain}api/oneAddressList?uid=${userinfo[0]["_id"]}&sign=${sign}';
  var response = await Dio().get(api);

  print(response);
  setState(() {
      this._addressList=response.data['result'];
  });
}

添加地方2. 在下面主程序的地方 往下拉
在这里插入图片描述
在这里插入图片描述

 SizedBox(height: 10),
  this._addressList.length>0?ListTile(
    title: Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        Text("${this._addressList[0]["name"]}  ${this._addressList[0]["phone"]}"),
        SizedBox(height: 10),
        Text("${this._addressList[0]["address"]}"),
      ],
    ),
    trailing: Icon(Icons.navigate_next),
    onTap: () {
      Navigator.pushNamed(context, '/addressList');
    },
  ):ListTile(
    leading: Icon(Icons.add_location),
    title: Center(
      child: Text("请添加收货地址"),
    ),
    trailing: Icon(Icons.navigate_next),
    onTap: () {
      Navigator.pushNamed(context, '/addressAdd');
    },
  ),
  SizedBox(height: 10),

4.点击选择地址
回到页面在这里插入图片描述添加广播方法。

//结算页面
class CheckOutEvent{
  String str;
  CheckOutEvent(String str){
    this.str=str;
  }
}

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

  //监听页面销毁的事件
dispose(){
  super.dispose();
  eventBus.fire(new CheckOutEvent('改收货地址成功...'));
}

5.2添加方法

//修改默认收货地址
_changeDefaultAddress(id) async{
  
  List userinfo = await UserServices.getUserInfo();

  var tempJson = {"uid": userinfo[0]['_id'], "id":id,"salt": userinfo[0]["salt"]};

  var sign = SignServices.getSign(tempJson);

  var api =
      '${Config.domain}api/changeDefaultAddress';
  var response = await Dio().post(api,data:{
     "uid": userinfo[0]['_id'],
     "id":id,
     "sign":sign
  });    
  Navigator.pop(context);
  
}

5.3修改下面的方法
在这里插入图片描述

InkWell(
   child: Column(
       crossAxisAlignment: CrossAxisAlignment.start,
       children: <Widget>[
         Text(
             "${this.addressList[index]["name"]}  ${this.addressList[index]["phone"]}"),
         SizedBox(height: 10),
         Text("${this.addressList[index]["address"]}"),
       ]),
   onTap: (){

     this._changeDefaultAddress(this.addressList[index]["_id"]);
   },
),

在这里插入图片描述

InkWell(
  child:  Column(
       crossAxisAlignment: CrossAxisAlignment.start,
       children: <Widget>[
         Text(
             "${this.addressList[index]["name"]}  ${this.addressList[index]["phone"]}"),
         SizedBox(height: 10),
         Text("${this.addressList[index]["address"]}"),
       ]),
   onTap: (){
     this._changeDefaultAddress(this.addressList[index]["_id"]);
   },
),

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

//监听广播
eventBus.on<CheckOutEvent>().listen((event) {
  print(event.str);
  this._getDefaultAddress();
});

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

//监听页面销毁的事件
dispose(){
  super.dispose();
  eventBus.fire(new AddressEvent('增加成功...'));
  eventBus.fire(new CheckOutEvent('改收货地址成功...'));//------------------------------
}

重新启动运行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冯汉栩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值