feat: 项目框架,全局空间处理
This commit is contained in:
1 parent
4df6be7411
commit
d90d023e85
36 files changed
+1166
-118
No files matched your search
@@ -0,0 +1,154 @@
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
class AppRequest {
|
||||
|
||||
static const Duration defaultTimeout = Duration(seconds: 15);
|
||||
static final AppRequest instance = AppRequest();
|
||||
final Dio dio;
|
||||
|
||||
AppRequest({
|
||||
Dio? dio,
|
||||
String baseUrl = '',
|
||||
Duration connectTimeout = defaultTimeout,
|
||||
Duration sendTimeout = defaultTimeout,
|
||||
Duration receiveTimeout = defaultTimeout,
|
||||
}) : dio =
|
||||
dio ??
|
||||
Dio(
|
||||
BaseOptions(
|
||||
baseUrl: baseUrl,
|
||||
connectTimeout: connectTimeout,
|
||||
sendTimeout: sendTimeout,
|
||||
receiveTimeout: receiveTimeout,
|
||||
responseType: ResponseType.json,
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
|
||||
void setBaseUrl(String baseUrl) {
|
||||
dio.options.baseUrl = baseUrl;
|
||||
}
|
||||
|
||||
void setHeader(String key, Object? value) {
|
||||
dio.options.headers[key] = value;
|
||||
}
|
||||
|
||||
void removeHeader(String key) {
|
||||
dio.options.headers.remove(key);
|
||||
}
|
||||
|
||||
void setToken(String token, {String prefix = 'Bearer'}) {
|
||||
final value = prefix.isEmpty ? token : '$prefix $token';
|
||||
setHeader('Authorization', value);
|
||||
}
|
||||
|
||||
void clearToken() {
|
||||
removeHeader('Authorization');
|
||||
}
|
||||
|
||||
Future<T?> get<T>(
|
||||
String path, {
|
||||
Map<String, dynamic>? queryParameters,
|
||||
Options? options,
|
||||
CancelToken? cancelToken,
|
||||
ProgressCallback? onReceiveProgress,
|
||||
}) {
|
||||
return request<T>(
|
||||
path,
|
||||
method: 'GET',
|
||||
queryParameters: queryParameters,
|
||||
options: options,
|
||||
cancelToken: cancelToken,
|
||||
onReceiveProgress: onReceiveProgress,
|
||||
);
|
||||
}
|
||||
|
||||
Future<T?> post<T>(
|
||||
String path, {
|
||||
Object? data,
|
||||
Map<String, dynamic>? queryParameters,
|
||||
Options? options,
|
||||
CancelToken? cancelToken,
|
||||
ProgressCallback? onSendProgress,
|
||||
ProgressCallback? onReceiveProgress,
|
||||
}) {
|
||||
return request<T>(
|
||||
path,
|
||||
method: 'POST',
|
||||
data: data,
|
||||
queryParameters: queryParameters,
|
||||
options: options,
|
||||
cancelToken: cancelToken,
|
||||
onSendProgress: onSendProgress,
|
||||
onReceiveProgress: onReceiveProgress,
|
||||
);
|
||||
}
|
||||
|
||||
Future<T?> put<T>(
|
||||
String path, {
|
||||
Object? data,
|
||||
Map<String, dynamic>? queryParameters,
|
||||
Options? options,
|
||||
CancelToken? cancelToken,
|
||||
ProgressCallback? onSendProgress,
|
||||
ProgressCallback? onReceiveProgress,
|
||||
}) {
|
||||
return request<T>(
|
||||
path,
|
||||
method: 'PUT',
|
||||
data: data,
|
||||
queryParameters: queryParameters,
|
||||
options: options,
|
||||
cancelToken: cancelToken,
|
||||
onSendProgress: onSendProgress,
|
||||
onReceiveProgress: onReceiveProgress,
|
||||
);
|
||||
}
|
||||
|
||||
Future<T?> delete<T>(
|
||||
String path, {
|
||||
Object? data,
|
||||
Map<String, dynamic>? queryParameters,
|
||||
Options? options,
|
||||
CancelToken? cancelToken,
|
||||
}) {
|
||||
return request<T>(
|
||||
path,
|
||||
method: 'DELETE',
|
||||
data: data,
|
||||
queryParameters: queryParameters,
|
||||
options: options,
|
||||
cancelToken: cancelToken,
|
||||
);
|
||||
}
|
||||
|
||||
Future<T?> request<T>(
|
||||
String path, {
|
||||
required String method,
|
||||
Object? data,
|
||||
Map<String, dynamic>? queryParameters,
|
||||
Options? options,
|
||||
CancelToken? cancelToken,
|
||||
ProgressCallback? onSendProgress,
|
||||
ProgressCallback? onReceiveProgress,
|
||||
}) async {
|
||||
final response = await dio.request<T>(
|
||||
path,
|
||||
data: data,
|
||||
queryParameters: queryParameters,
|
||||
options: _withMethod(options, method),
|
||||
cancelToken: cancelToken,
|
||||
onSendProgress: onSendProgress,
|
||||
onReceiveProgress: onReceiveProgress,
|
||||
);
|
||||
|
||||
return response.data;
|
||||
}
|
||||
|
||||
Options _withMethod(Options? options, String method) {
|
||||
return options == null
|
||||
? Options(method: method)
|
||||
: options.copyWith(method: method);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user