flutter Dio 使用封装
时间: 2023-09-01 18:14:02 浏览: 199
在使用 Flutter Dio 进行网络请求时,可以将其进行封装,以便于代码的复用和维护。以下是一个简单的 Flutter Dio 封装示例:
```dart
import 'package:dio/dio.dart';
class HttpUtil {
static HttpUtil instance;
Dio dio;
BaseOptions options;
// 构造函数
HttpUtil() {
options = BaseOptions(
baseUrl: 'https://api.example.com/', // 接口地址
connectTimeout: 5000, // 连接超时时间
receiveTimeout: 3000, // 接收超时时间
headers: {
'Content-Type': 'application/json', // 设置请求头
},
);
dio = Dio(options);
}
// 单例模式
static HttpUtil getInstance() {
if (instance == null) {
instance = HttpUtil();
}
return instance;
}
// GET 请求
Future<Map<String, dynamic>> get(String url, {Map<String, dynamic> params}) async {
Response response;
try {
response = await dio.get(url, queryParameters: params);
} on DioError catch (e) {
return Future.error(e);
}
return response.data;
}
// POST 请求
Future<Map<String, dynamic>> post(String url, {Map<String, dynamic> params}) async {
Response response;
try {
response = await dio.post(url, data: params);
} on DioError catch (e) {
return Future.error(e);
}
return response.data;
}
}
```
在上述示例中,我们定义了一个 HttpUtil 类,其中包含了 Dio 实例的初始化、GET 和 POST 请求的封装。我们可以通过 `HttpUtil.getInstance()` 获取 HttpUtil 的单例对象,然后通过调用 `get` 或 `post` 方法来发起网络请求。这样做的好处是可以将网络请求的相关设置和配置统一管理,方便后续的维护和扩展。同时,通过封装,也避免了在多个地方重复编写相同的代码。
阅读全文