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