Dio Post 泛形返回值

26 min read

定义接口的公共返回对象

import 'package:ejzc_app_flutter/generated/json/base/json_convert_content.dart';

class ResponseEntity<T> {
  T? data;
  int? errorCode;
  String? errorMsg;

  ResponseEntity(
      {required this.data, required this.errorCode, required this.errorMsg});

  ResponseEntity.fromJson(Map<String, dynamic> json) {
    data = JsonConvert.fromJsonAsT<T>(json['data']);
    errorCode = json['code'];
    errorMsg = json['msg'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = <String, dynamic>{};
    if (this.data != null) {
      data['data'] = this.data;
    }
    data['code'] = errorCode;
    data['msg'] = errorMsg;
    return data;
  }
}

DIO post 的封装

 postMethod<T>(api,
      {Map<String, dynamic>? queryParameters,
      required Map<String, dynamic> data}) async {
    Response response =
        await dio.post(api, data: data, queryParameters: queryParameters);
    var a = ResponseEntity<T>.fromJson(response.data as Map<String, dynamic>);
    return a;
  }

使用

class DailyService {
  // 获取日志列表/日志详情
  static getDailyList(data) async {
    var res = await Http.getInstance()
        .postMethod<DailyData>('/log/page', data: data, queryParameters: {
      'pageNo': data['pageNo'],
      'pageSize': data['pageSize'],
    });
    // 打印类型
    return res.data?.records;
  }
}