import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:ftrecruiter/api/interceptors/auth_interceptor.dart'; import 'package:ftrecruiter/api/interceptors/log_res_interceptor.dart'; import 'package:ftrecruiter/api/interceptors/log_req_interceptor.dart'; import 'package:ftrecruiter/comm/constants/api_constants.dart'; import 'package:ftrecruiter/comm/constants/app_constant.dart'; typedef NetSuccessCallback = Function(T data); typedef NetSuccessListCallback = Function(T data); typedef NetErrorCallback = Function(int? code, String? msg); enum HttpMethod { GET, POST } //基类的Api封装 class ApiProvider extends GetConnect { //Get请求封装 Future requestNetwork( String url, { HttpMethod? method, Map? headers, Map? query, dynamic body, NetSuccessCallback>? onSuccess, NetSuccessListCallback>? onSuccessList, NetErrorCallback? onError, }) async { var req = method != null && method == HttpMethod.POST ? post(url, body, headers: headers, query: query) : get(url, headers: headers, query: query); var result = await req; if (result.statusCode == 200) { //网络请求正确之后获取正常的Json-Map Map jsonMap = result.body; //查看apiCode是否正确 int code = jsonMap['code']; if (code == 200) { if (jsonMap['data'] is List) { //返回数组 List list = jsonMap['data']; if (onSuccessList != null) { onSuccessList(list); } } else { //返回对象 if (onSuccess != null) { onSuccess(jsonMap['data']); } } } else { if (onError != null) { onError(jsonMap['code'], jsonMap['message']); } //吐司Api错误信息 SmartDialog.compatible.showToast("${jsonMap['message']}"); } } else { if (onError != null) { // result.bodyString 错误信息,这里没必要打印,拦截器中有打印的 onError(result.statusCode, result.statusText); } //吐司网络请求错误 SmartDialog.compatible.showToast( "Network Error :${result.statusCode} ${result.statusText}"); } } @override void onInit() { httpClient.baseUrl = ApiConstants.baseUrl; // httpClient.addResponseModifier(responseInterceptor); /// 统一添加身份验证请求头 httpClient.addRequestModifier(authInterceptor); /// 打印Log(生产模式去除) if (!AppConstant.inProduction) { httpClient.addRequestModifier(logReqInterceptor); } /// 打印Log(生产模式去除) if (!AppConstant.inProduction) { httpClient.addResponseModifier(logResInterceptor); } } }