87 lines
2.8 KiB
Dart
87 lines
2.8 KiB
Dart
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<Response<T>> post<T>(String? url, body,
|
||
{String? contentType = "application/json",
|
||
Map<String, String>? headers,
|
||
Map<String, dynamic>? query,
|
||
Decoder<T>? 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('星锁请求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('得到的数据======>bodyString:${res.bodyString} body:${res.body} bodyBytes:${res.bodyBytes} status:${res.status} statusText:${res.statusText} statusCode:${res.statusCode}');
|
||
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;
|
||
}
|
||
}
|
||
}
|