基础页面
This commit is contained in:
91
lib/utils/request/http_request.dart
Normal file
91
lib/utils/request/http_request.dart
Normal file
@@ -0,0 +1,91 @@
|
||||
import 'package:chat/utils/request/http_interceptor.dart';
|
||||
import 'package:chat/utils/request/http_options.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
enum HttpMethod {
|
||||
get,
|
||||
post,
|
||||
put,
|
||||
delete,
|
||||
patch,
|
||||
head,
|
||||
}
|
||||
|
||||
class HttpRequest {
|
||||
static HttpRequest? _instance;
|
||||
static Dio _dio = Dio();
|
||||
Dio get dio => _dio;
|
||||
|
||||
HttpRequest._internal() {
|
||||
_instance = this;
|
||||
_instance!._init();
|
||||
}
|
||||
|
||||
factory HttpRequest() => _instance ?? HttpRequest._internal();
|
||||
|
||||
static HttpRequest? getInstance() {
|
||||
return _instance ?? HttpRequest._internal();
|
||||
}
|
||||
|
||||
/// 取消请求token
|
||||
final CancelToken _cancelToken = CancelToken();
|
||||
|
||||
_init() {
|
||||
BaseOptions options = BaseOptions(
|
||||
baseUrl: HttpOptions.baseUrl,
|
||||
connectTimeout: HttpOptions.connectTimeout,
|
||||
receiveTimeout: HttpOptions.receiveTimeout,
|
||||
);
|
||||
_dio = Dio(options);
|
||||
|
||||
/// 添加拦截器
|
||||
_dio.interceptors.add(HttpInterceptor());
|
||||
}
|
||||
|
||||
/// 请求
|
||||
Future request(
|
||||
String path, {
|
||||
HttpMethod method = HttpMethod.get,
|
||||
Map<String, dynamic>? params,
|
||||
dynamic data,
|
||||
Options? options,
|
||||
CancelToken? cancelToken,
|
||||
ProgressCallback? onSendProgress,
|
||||
ProgressCallback? onReceiveProgress,
|
||||
}) async {
|
||||
const methodValues = {
|
||||
HttpMethod.get: 'get',
|
||||
HttpMethod.post: 'post',
|
||||
HttpMethod.put: 'put',
|
||||
HttpMethod.delete: 'delete',
|
||||
HttpMethod.patch: 'patch',
|
||||
HttpMethod.head: 'head'
|
||||
};
|
||||
|
||||
options ??= Options(method: methodValues[method]);
|
||||
|
||||
try {
|
||||
Response response = await _dio.request(
|
||||
path,
|
||||
data: data,
|
||||
queryParameters: params,
|
||||
cancelToken: cancelToken ?? _cancelToken,
|
||||
options: options,
|
||||
onSendProgress: onSendProgress,
|
||||
onReceiveProgress: onReceiveProgress,
|
||||
);
|
||||
// ignore: avoid_print
|
||||
print('请求地址:${response.requestOptions.uri}');
|
||||
// ignore: avoid_print
|
||||
print('响应数据:${response.data}');
|
||||
return response.data;
|
||||
} on DioError catch (e) {
|
||||
throw Exception(e.message);
|
||||
}
|
||||
}
|
||||
|
||||
/// 取消网络请求
|
||||
void cancelRequests({CancelToken? token}) {
|
||||
token ?? _cancelToken.cancel('CANCELED');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user