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

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

代码文档

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

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

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

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

效果:
请添加图片描述

1.替换在这里插入图片描述页面里面的全部内容

2.去到增加地址页面在这里插入图片描述

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

String name='';
String phone='';
String address='';

3.增加红色部分的代码
在这里插入图片描述
在这里插入图片描述
4.回到在这里插入图片描述编写网络获取数据,添加下面的代码

List addressList = [];

@override
void initState() {
  super.initState();
  this._getAddressList();
}

_getAddressList() async {
  //请求接口
  List userinfo = await UserServices.getUserInfo();
  var tempJson = {"uid": userinfo[0]['_id'], "salt": userinfo[0]["salt"]};
  var sign = SignServices.getSign(tempJson);
  var api =
      '${Config.domain}api/addressList?uid=${userinfo[0]['_id']}&sign=${sign}';
  var response = await Dio().get(api);
  // print(response.data["result"]);
  setState(() {
    this.addressList = response.data["result"];
  });
}

5.把之前ListView写死的数据改为动态。

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

ListView.builder(
  itemCount: this.addressList.length,
  itemBuilder: (context, index) {
    if (this.addressList[index]["default_address"] == 1) {
      return Column(
        children: <Widget>[
          SizedBox(height: 20),
          ListTile(
            leading: Icon(Icons.check, color: Colors.red),
            title: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Text(
                      "${this.addressList[index]["name"]}  ${this.addressList[index]["phone"]}"),
                  SizedBox(height: 10),
                  Text("${this.addressList[index]["address"]}"),
                ]),
            trailing: Icon(Icons.edit, color: Colors.blue),
          ),
          Divider(height: 20),
        ],
      );
    } else {
      return Column(
        children: <Widget>[
          SizedBox(height: 20),
          ListTile(
            title: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Text(
                      "${this.addressList[index]["name"]}  ${this.addressList[index]["phone"]}"),
                  SizedBox(height: 10),
                  Text("${this.addressList[index]["address"]}"),
                ]),
            trailing: Icon(Icons.edit, color: Colors.blue),
          ),
          Divider(height: 20),
        ],
      );
    }
  },
),

6.下面添加广播事件店家地址成功之后回来地址列表刷新地址。

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

class AddressEvent{
  String str;
  AddressEvent(String str){
    this.str=str;
  }
}

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

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

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

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

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

@override
void initState() {
  super.initState();
  this._getAddressList();


//--------------------------------------------
  //监听增加收货地址的广播
  eventBus.on<AddressEvent>().listen((event) {
    print(event.str);
    this._getAddressList();
  });
//--------------------------------------------


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冯汉栩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值