Flutter Dio二次封装
在Flutter中使用Dio进行网络请求时,可以对Dio客户端进行二次封装以提高代码复用性和可维护性。以下是一个简单的Dio二次封装示例:
import 'package:dio/dio.dart';
class HttpService {
static Dio _dio;
static Dio get dio {
if (_dio == null) {
_dio = new Dio();
// 全局配置
(_dio.options.headers)[‘user-agent’] = ‘your-custom-user-agent’;
_dio.options.connectTimeout = 5000; // 连接超时时间
_dio.options.receiveTimeout = 3000; // 响应超时时间
}
return _dio;
}
// 发送GET请求
static Future<Response> get(String url, {Map<String, dynamic> queryParameters, Options options}) async {
return dio.get(url, queryParameters: queryParameters, options: options);
}
// 发送POST请求
static Future<Response> post(String url, {Map<String, dynamic> data, Options options}) async {
return dio.post(url, data: data, options: options);
}
// 其他请求方法(如PUT, DELETE)可以类似添加
}
// 使用示例
void fetchData() async {
try {
Response response = await HttpService.get('https://api.example.com/data');
print('Response data: ${response.data}');
} catch (e) {
print('Error: $e');
}
}
在这个示例中,我们创建了一个名为HttpService
的类,并在其中创建了一个静态的Dio对象。我们还为GET和POST请求提供了简单的封装方法。这样,每次发送请求时,只需调用HttpService.get
或HttpService.post
即可,从而减少重复代码并提高代码可读性。
评论已关闭