import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import '../appRouters.dart'; import 'api.dart'; import 'request_interceptor.dart'; import 'request_interceptor_log.dart'; import 'response_interceptor.dart'; import 'response_interceptor_log.dart'; class BaseProvider extends GetConnect with Api { @override void onInit() { httpClient.baseUrl = baseUrl; httpClient.addRequestModifier(requestInterceptor); httpClient.addResponseModifier(responseInterceptor); httpClient.addRequestModifier(requestLogInterceptor); httpClient.addResponseModifier(responseLogInterceptor); httpClient.timeout = 15.seconds; super.onInit(); } @override Future> post(String? url, body, {String? contentType = "application/json", Map? headers, Map? query, Decoder? decoder, bool? isUnUploadFile = true, Progress? uploadProgress, bool? isUnShowLoading = false}) async { // print("post: url:${url} body:${body} contentType:${contentType} headers:${headers} query:${query}"); if (isUnShowLoading == false) EasyLoading.show(); // print('请求url======>$url'); // print('请求body体======>$body'); var res = await super.post(url, body, contentType: contentType, headers: headers, query: query, decoder: decoder, uploadProgress: uploadProgress); if (res.body == null) { if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); var rs = { "errorMsg": "Network Error!", "errorCode": -1, "data": null, "description": "表示成功或是。" }; return Response( request: res.request, statusCode: -1, bodyString: res.bodyString, bodyBytes: res.bodyBytes, body: rs as T, statusText: res.statusText, ); } else {} // print('得到的数据======>${res.bodyString}'); getDataResult(res.body); return res; } getDataResult(T) { switch (T["errorCode"]) { case 403: Get.offNamedUntil(Routers.starLockLoginPage, (route) => false); break; case 500: EasyLoading.showToast("服务器错误", duration: 2000.milliseconds); break; case 421: case 422: case 430: //与葛工约定弹出ErrorMsg EasyLoading.showToast(T["errorMsg"], duration: 2000.milliseconds); break; //已单独处理,暂不做全局弹窗 // case 425: // Toast.show(msg: "用户不存在"); // break; case 10001: EasyLoading.showToast("数据不存在", duration: 2000.milliseconds); break; } } }