123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- import 'dart:io';
- 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';
- import '../comm/utils/log_utils.dart';
- typedef NetSuccessCallback<T> = Function(T data);
- typedef NetSuccessListCallback<T> = Function(T data);
- typedef NetErrorCallback = Function(int? code, String? msg);
- enum HttpMethod { GET, POST }
- class ApiProvider extends GetConnect {
-
- Future<void> requestNetwork(
- String url, {
- HttpMethod? method,
- Map<String, String>? headers,
- Map<String, dynamic>? query,
- Map<String, File>? paths,
- NetSuccessCallback<Map<String, dynamic>>? onSuccess,
- NetSuccessListCallback<List<dynamic>>? onSuccessList,
- 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()}");
-
- req = post(url, form, headers: headers);
- } else {
-
- req = get(url, headers: headers, query: query);
- }
-
- final startTime = DateTime.now().millisecond;
- var result = await req;
- final endTime = DateTime.now().millisecond;
- if (!AppConstant.inProduction) {
- final duration = endTime - startTime;
- Log.d('网络请求耗时 $duration 毫秒, 响应内容 ${result.body}}');
- }
- if (result.statusCode == 200) {
-
- Map<String, dynamic> jsonMap = result.body;
-
- int code = jsonMap['code'];
- if (code == 200) {
- if (jsonMap['data'] is List<dynamic>) {
-
- List<dynamic> list = jsonMap['data'];
- if (onSuccessList != null) {
- onSuccessList(list);
- }
- } else {
-
- if (onSuccess != null) {
- onSuccess(jsonMap['data']);
- }
- }
- } else {
-
- if (onError != null) {
- onError(jsonMap['code'], jsonMap['message']);
- }
- }
- } else {
-
- if (onError != null) {
-
- onError(result.statusCode, result.statusText);
- }
-
- SmartDialog.compatible
- .showToast("Request Network Error :${result.statusCode} ${result.statusText}");
- }
- }
- @override
- void onInit() {
- httpClient.baseUrl = ApiConstants.baseUrl;
-
-
- httpClient.addRequestModifier(authInterceptor);
-
- if (!AppConstant.inProduction) {
- httpClient.addRequestModifier(logReqInterceptor);
- }
-
-
-
-
- }
- }
|