|
@@ -1,3 +1,5 @@
|
|
|
|
+import 'dart:io';
|
|
|
|
+
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:ftrecruiter/api/interceptors/auth_interceptor.dart';
|
|
import 'package:ftrecruiter/api/interceptors/auth_interceptor.dart';
|
|
@@ -18,24 +20,53 @@ enum HttpMethod { GET, POST }
|
|
class ApiProvider extends GetConnect {
|
|
class ApiProvider extends GetConnect {
|
|
//Get请求封装
|
|
//Get请求封装
|
|
Future<void> requestNetwork(
|
|
Future<void> requestNetwork(
|
|
- String url, {
|
|
|
|
- HttpMethod? method,
|
|
|
|
- Map<String, String>? headers,
|
|
|
|
- Map<String, dynamic>? query,
|
|
|
|
- dynamic body,
|
|
|
|
- NetSuccessCallback<Map<String, dynamic>>? onSuccess,
|
|
|
|
- NetSuccessListCallback<List<dynamic>>? onSuccessList,
|
|
|
|
- NetErrorCallback? onError,
|
|
|
|
- }) async {
|
|
|
|
- var req = method != null && method == HttpMethod.POST
|
|
|
|
- ? post(url, body, headers: headers, query: query)
|
|
|
|
- : get(url, headers: headers, query: query);
|
|
|
|
|
|
+ String url, {
|
|
|
|
+ HttpMethod? method,
|
|
|
|
+ Map<String, String>? headers,
|
|
|
|
+ Map<String, dynamic>? query, //请求参数
|
|
|
|
+ Map<String, File>? paths, //文件上传
|
|
|
|
+ NetSuccessCallback<Map<String, dynamic>>? onSuccess, //data数据成功回调
|
|
|
|
+ NetSuccessListCallback<List<dynamic>>? onSuccessList, //List数据成功回调
|
|
|
|
+ NetErrorCallback? onError,
|
|
|
|
+ }) async {
|
|
|
|
+ //封装参数
|
|
|
|
+ Future<Response> req;
|
|
|
|
+
|
|
|
|
+ if (method != null && method == HttpMethod.POST) {
|
|
|
|
+ var map = <String, dynamic>{};
|
|
|
|
+
|
|
|
|
+ if (query != null || paths != null) {
|
|
|
|
+ if (query != null) {
|
|
|
|
+ map.addAll(query);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (paths != null) {
|
|
|
|
+ paths.forEach((key, value) {
|
|
|
|
+ map[key] = MultipartFile(
|
|
|
|
+ value.readAsBytesSync(),
|
|
|
|
+ filename: "file",
|
|
|
|
+ );
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ var form = FormData(map);
|
|
|
|
+
|
|
|
|
+ Log.d("Post请求FromData参数,fields:${form.fields.toString()}");
|
|
|
|
+ //以Post-Body的方式上传
|
|
|
|
+ req = post(url, form, headers: headers);
|
|
|
|
+ } else {
|
|
|
|
+ //以Get-Params的方式上传
|
|
|
|
+ req = get(url, headers: headers, query: query);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //开始真正请求
|
|
final startTime = DateTime.now().millisecond;
|
|
final startTime = DateTime.now().millisecond;
|
|
var result = await req;
|
|
var result = await req;
|
|
final endTime = DateTime.now().millisecond;
|
|
final endTime = DateTime.now().millisecond;
|
|
- final duration = endTime - startTime;
|
|
|
|
|
|
+
|
|
if (!AppConstant.inProduction) {
|
|
if (!AppConstant.inProduction) {
|
|
|
|
+ final duration = endTime - startTime;
|
|
Log.d('网络请求耗时 $duration 毫秒, 响应内容 ${result.body}}');
|
|
Log.d('网络请求耗时 $duration 毫秒, 响应内容 ${result.body}}');
|
|
}
|
|
}
|
|
|
|
|
|
@@ -63,8 +94,6 @@ class ApiProvider extends GetConnect {
|
|
if (onError != null) {
|
|
if (onError != null) {
|
|
onError(jsonMap['code'], jsonMap['message']);
|
|
onError(jsonMap['code'], jsonMap['message']);
|
|
}
|
|
}
|
|
- //吐司Api错误信息
|
|
|
|
- SmartDialog.compatible.showToast("${jsonMap['message']}");
|
|
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
//网络请求错误
|
|
//网络请求错误
|
|
@@ -73,7 +102,8 @@ class ApiProvider extends GetConnect {
|
|
onError(result.statusCode, result.statusText);
|
|
onError(result.statusCode, result.statusText);
|
|
}
|
|
}
|
|
//吐司网络请求错误
|
|
//吐司网络请求错误
|
|
- SmartDialog.compatible.showToast("Request Network Error :${result.statusCode} ${result.statusText}");
|
|
|
|
|
|
+ SmartDialog.compatible
|
|
|
|
+ .showToast("Request Network Error :${result.statusCode} ${result.statusText}");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -97,3 +127,4 @@ class ApiProvider extends GetConnect {
|
|
// }
|
|
// }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|