import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import 'package:star_lock/app_settings/app_settings.dart'; import '../appRouters.dart'; import '../flavors.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 = '${F.apiPrefix}/api'; 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, // 是否显示loading bool? isUserBaseUrl = true, // 文件上传不使用baseUrl }) async { AppLog.log('post: url:$url body:$body'); if (isUnShowLoading == false){ EasyLoading.show(); } if (isUserBaseUrl == false) { httpClient.baseUrl = ''; } else { httpClient.baseUrl = '${F.apiPrefix}/api'; } var res = await super.post(url, body, contentType: contentType, headers: headers, query: query, decoder: decoder, uploadProgress: uploadProgress); if (res.body == null) { if (EasyLoading.isShow) await EasyLoading.dismiss(animation: true); // EasyLoading.showToast("Network Error!", duration: 2000.milliseconds); if (res.statusCode == null) { EasyLoading.showToast('网络访问失败,请检查网络是否正常'.tr, duration: 2000.milliseconds); // EasyLoading.showToast("Network Error!", duration: 2000.milliseconds); } 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 {} 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; } } }