Files
UUVPN/flutter/lib/utils/http_util.dart
T
2023-06-25 11:50:55 +08:00

137 lines
4.6 KiB
Dart

import 'package:dio/dio.dart';
import 'package:sail/constant/app_strings.dart';
import 'package:sail/router/application.dart';
import 'package:sail/router/routers.dart';
import 'package:sail/utils/common_util.dart';
import 'package:sail/utils/shared_preferences_util.dart';
class HttpUtil {
static HttpUtil get instance => _httpUtil;
static final HttpUtil _httpUtil = HttpUtil();
late Dio dio;
HttpUtil() {
BaseOptions options = BaseOptions(
connectTimeout: 10000,
receiveTimeout: 10000,
);
dio = Dio(options);
dio.interceptors
.add(InterceptorsWrapper(onRequest: (options, handler) async {
//print("========================请求数据===================");
//print("url=${options.uri.toString()}");
//print("headers=${options.headers}");
//print("params=${options.data}");
//如果token存在在请求参数加上token
await SharedPreferencesUtil.getInstance()
?.getString(AppStrings.token)
.then((token) {
if (token != null) {
options.queryParameters[AppStrings.token] = token;
//print("token=$token");
}
});
//如果auth_data存在在请求参数加上auth_data
await SharedPreferencesUtil.getInstance()
?.getString(AppStrings.authData)
.then((authData) {
if (authData != null) {
options.queryParameters[AppStrings.authData] = authData;
//print("authData=$authData");
}
});
return handler.next(options);
}, onResponse: (response, handler) {
//print("========================请求数据===================");
//print("code=${response.statusCode}");
if (response.statusCode! < 200 || response.statusCode! >= 300) {
if (response.statusCode == 403) {
Application.navigatorKey.currentState?.pushNamed(Routers.login);
}
return handler.reject(DioError(
requestOptions: response.requestOptions,
response: response,
type: DioErrorType.response));
}
return handler.next(response);
}, onError: (error, handler) {
//print("========================请求错误===================");
//print("message =${error.message}");
//print("code=${error.response?.statusCode}");
return handler.next(error);
}));
}
//get请求
Future get(String url,
{Map<String, dynamic>? parameters, Options? options}) async {
Response response;
if (parameters != null && options != null) {
response =
await dio.get(url, queryParameters: parameters, options: options);
} else if (parameters != null && options == null) {
response = await dio.get(url, queryParameters: parameters);
} else if (parameters == null && options != null) {
response = await dio.get(url, options: options);
} else {
response = await dio.get(url);
}
return response.data;
}
//post请求
Future post(String url,
{Map<String, dynamic>? parameters, Options? options}) async {
Response response;
if (parameters != null && options != null) {
response = await dio.post(url, data: parameters, options: options);
} else if (parameters != null && options == null) {
response = await dio.post(url, data: parameters);
} else if (parameters == null && options != null) {
response = await dio.post(url, options: options);
} else {
response = await dio.post(url);
}
return response.data;
}
//put请求
Future put(String url,
{Map<String, dynamic>? parameters, Options? options}) async {
Response response;
if (parameters != null && options != null) {
response = await dio.put(url, data: parameters, options: options);
} else if (parameters != null && options == null) {
response = await dio.put(url, data: parameters);
} else if (parameters == null && options != null) {
response = await dio.put(url, options: options);
} else {
response = await dio.put(url);
}
return response.data;
}
//delete请求
Future delete(String url,
{Map<String, dynamic>? parameters, Options? options}) async {
Response response;
if (parameters != null && options != null) {
response = await dio.delete(url, data: parameters, options: options);
} else if (parameters != null && options == null) {
response = await dio.delete(url, data: parameters);
} else if (parameters == null && options != null) {
response = await dio.delete(url, options: options);
} else {
response = await dio.delete(url);
}
return response.data;
}
}