flutter多接口请求返回后统一处理

背景:一个页面的数据来源可能不止一个接口,我们可以请求一个再请求另一个串行渲染,不过页面上loading还没有消失就显示一点,一会再显示一点,效果不理想,于是就想一次发出多个请求,都返回后统一处理。

搬个砖上代码:

// 获取订单详情 dio 来源 import 'package:dio/dio.dart';
Future _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);
      // 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就可以了。

你可能感兴趣的:(flutter多接口请求返回后统一处理)