一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。
效果:
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('改收货地址成功...'));//------------------------------
}
重新启动运行