Flutter网络请求辅助插件dio_helper的使用
Flutter网络请求辅助插件dio_helper的使用
dio_helper
是一个基于 Dio
的网络请求工具类,用于简化 Flutter 中的网络请求操作,并支持数据缓存以加快分页加载速度。
使用步骤
1. 添加依赖
在 pubspec.yaml
文件中添加 dio
和 dio_cache_interceptor
依赖:
dependencies:
dio: ^4.0.0
dio_cache_interceptor: ^3.0.0
运行以下命令安装依赖:
flutter pub get
2. 创建 dio_helper
工具类
创建一个名为 dio_helper.dart
的文件,并编写如下代码:
import 'dart:convert';
import 'package:dio/dio.dart';
import 'package:dio_cache_interceptor/dio_cache_interceptor.dart';
import 'package:dio_cache_interceptor/src/config.dart';
class DioHelper {
// 创建Dio实例
late final Dio _dio;
// 初始化DioHelper
DioHelper() {
_dio = Dio();
_dio.interceptors.add(
DioCacheInterceptor(
options: CacheOptions(
store: MemCacheStore(), // 使用内存缓存
policy: CachePolicy.request, // 请求时检查缓存
maxAge: const Duration(days: 1), // 缓存有效期为1天
),
),
);
}
// 发送GET请求
Future<Map<String, dynamic>> get(String url) async {
try {
final response = await _dio.get(url);
return jsonDecode(response.data.toString());
} catch (e) {
throw Exception("Error fetching data: $e");
}
}
// 发送POST请求
Future<Map<String, dynamic>> post(String url, {Map<String, dynamic>? data}) async {
try {
final response = await _dio.post(url, data: data);
return jsonDecode(response.data.toString());
} catch (e) {
throw Exception("Error sending data: $e");
}
}
}
3. 在项目中使用 dio_helper
在 main.dart
文件中引入并使用 DioHelper
:
import 'package:flutter/material.dart';
import 'dio_helper.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
[@override](/user/override)
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
final DioHelper _dioHelper = DioHelper();
List<dynamic> _dataList = [];
[@override](/user/override)
void initState() {
super.initState();
fetchData();
}
Future<void> fetchData() async {
try {
// 调用GET请求
final response = await _dioHelper.get('https://jsonplaceholder.typicode.com/posts');
setState(() {
_dataList = response['data'];
});
} catch (e) {
print(e);
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Dio Helper 示例'),
),
body: ListView.builder(
itemCount: _dataList.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(_dataList[index]['title']),
subtitle: Text(_dataList[index]['body']),
);
},
),
);
}
}
更多关于Flutter网络请求辅助插件dio_helper的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复