背景:一个页面的数据来源可能不止一个接口,我们可以请求一个再请求另一个串行渲染,不过页面上loading还没有消失就显示一点,一会再显示一点,效果不理想,于是就想一次发出多个请求,都返回后统一处理。
搬个砖上代码:
// 获取订单详情 dio 来源 import 'package:dio/dio.dart';
Future<OrderDetailRes?> _httpGetOrderDetail() async {
OrderDetailRes? reply;
try {
var para = {
"id": "6" //*订单ID
};
var response = await dio.get("http://127.0.0.1:8080/test", queryParameters: para);
// print("response $response");
var data = json.decode(response.data);
// OrderDetailRes有网站可自动生成
reply = OrderDetailRes.fromJson(data as Map<String, dynamic>);
// print(reply);
} catch (e) {
print("订单列表请求失败 ${e.toString()}");
}
return Future.value(reply);
}
// 假如请求多个接口,都返回后再一起处理,这里我就不再实现其他,其他和这获取订单详情一样
void _httpGetData() {
Future.wait([_httpGetOrderDetail(),_httpGetOrderDetail()]).then((value) {
var reply1 = value[0] as OrderDetailRes;
var reply2 = value[1] as OrderDetailRes;
print(reply1.toString());
print(reply2.toString());
setState(() {
// 处理代码
});
}).catchError((error) {
EasyLoading.showToast("接口获取失败");
});
}
我们在需要的地方调用_httpGetData就可以了。
网友评论