Flutter网络请求插件cherry_request的使用
Flutter网络请求插件cherry_request的使用
cherry_request
是一个用于 Flutter 的网络请求插件,它基于 Dio
实现,提供了更简洁的 API 和更多的功能。本文将详细介绍如何使用 cherry_request
插件进行网络请求,并附带完整的示例代码。
Getting Started(开始使用)
1. 添加依赖
在你的 pubspec.yaml
文件中添加 cherry_request
依赖:
dependencies:
cherry_request: ^1.0.0 # 请根据最新版本替换
然后运行以下命令安装依赖:
flutter pub get
2. 初始化 HttpClient
首先,我们需要初始化一个 HttpClient
对象,配置基础 URL 和超时时间等参数。
以下是完整的初始化代码:
import 'package:cherry_request/request/index.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
late HttpClient httpClient;
[@override](/user/override)
void initState() {
super.initState();
// 配置 HTTP 客户端
HttpConfig httpConfig = HttpConfig(
baseUrl: 'https://jsonplaceholder.typicode.com', // 示例 API 基础 URL
interceptors: [], // 可选的拦截器列表
connectTimeout: 100000, // 连接超时时间(毫秒)
sendTimeout: 100000, // 请求发送超时时间(毫秒)
receiveTimeout: 100000, // 响应接收超时时间(毫秒)
);
// 创建 HttpClient 实例
httpClient = HttpClient(dioConfig: httpConfig, checkSuccessFn: (Response<dynamic> response) {
// 自定义成功判断逻辑
return response.data!["code"] == 200;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('cherry_request 示例'),
),
body: const Center(
child: Text('网络请求插件已初始化!'),
),
),
);
}
}
3. 发起网络请求
接下来,我们可以通过 httpClient
发起 GET 或 POST 请求。以下是完整的示例代码:
示例 1:GET 请求
Future<void> fetchPosts() async {
try {
// 发起 GET 请求
Response response = await httpClient.get('/posts');
// 检查请求是否成功
if (response.isSuccess) {
print('GET 请求成功,数据为: ${response.data}');
} else {
print('GET 请求失败,错误信息: ${response.message}');
}
} catch (e) {
print('网络请求异常: $e');
}
}
示例 2:POST 请求
Future<void> createPost() async {
try {
// 构造请求参数
Map<String, dynamic> params = {
"title": "New Post",
"body": "This is a new post created by cherry_request.",
"userId": 1,
};
// 发起 POST 请求
Response response = await httpClient.post('/posts', data: params);
// 检查请求是否成功
if (response.isSuccess) {
print('POST 请求成功,返回数据为: ${response.data}');
} else {
print('POST 请求失败,错误信息: ${response.message}');
}
} catch (e) {
print('网络请求异常: $e');
}
}
4. 调用示例方法
在 build
方法中,我们可以添加按钮来触发上述网络请求方法:
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('cherry_request 示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: fetchPosts,
child: const Text('发起 GET 请求'),
),
ElevatedButton(
onPressed: createPost,
child: const Text('发起 POST 请求'),
),
],
),
),
),
);
}
更多关于Flutter网络请求插件cherry_request的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter网络请求插件cherry_request的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
cherry_request
是一个用于 Flutter 的网络请求插件,它简化了网络请求的过程,并提供了许多便捷的功能,如请求拦截、错误处理、缓存等。以下是如何使用 cherry_request
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 cherry_request
插件的依赖:
dependencies:
flutter:
sdk: flutter
cherry_request: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 初始化 CherryRequest
在你的 Flutter 项目中,通常可以在 main.dart
文件中初始化 CherryRequest
:
import 'package:cherry_request/cherry_request.dart';
void main() {
// 初始化 CherryRequest
CherryRequest.init(
baseUrl: 'https://api.example.com', // 你的 API 基础 URL
interceptors: [
// 添加拦截器
LogInterceptor(), // 日志拦截器
],
);
runApp(MyApp());
}
3. 发起网络请求
你可以使用 CherryRequest
来发起 GET、POST 等网络请求。以下是一些示例:
GET 请求
import 'package:cherry_request/cherry_request.dart';
Future<void> fetchData() async {
try {
var response = await CherryRequest.get('/endpoint');
print('Response data: ${response.data}');
} catch (e) {
print('Error: $e');
}
}
POST 请求
import 'package:cherry_request/cherry_request.dart';
Future<void> postData() async {
try {
var response = await CherryRequest.post(
'/endpoint',
data: {'key': 'value'}, // 请求体数据
);
print('Response data: ${response.data}');
} catch (e) {
print('Error: $e');
}
}
4. 使用拦截器
cherry_request
支持拦截器,你可以在请求发送前或响应返回后进行一些操作。例如,添加一个日志拦截器:
import 'package:cherry_request/cherry_request.dart';
class LogInterceptor extends Interceptor {
@override
void onRequest(RequestOptions options) {
print('Request: ${options.method} ${options.path}');
}
@override
void onResponse(Response response) {
print('Response: ${response.statusCode} ${response.data}');
}
@override
void onError(DioError error) {
print('Error: ${error.message}');
}
}
然后在初始化 CherryRequest
时添加这个拦截器:
CherryRequest.init(
baseUrl: 'https://api.example.com',
interceptors: [
LogInterceptor(),
],
);
5. 错误处理
cherry_request
会自动处理一些常见的网络错误,但你也可以自定义错误处理逻辑:
Future<void> fetchData() async {
try {
var response = await CherryRequest.get('/endpoint');
print('Response data: ${response.data}');
} on DioError catch (e) {
if (e.response != null) {
print('Error status code: ${e.response.statusCode}');
print('Error data: ${e.response.data}');
} else {
print('Error: ${e.message}');
}
} catch (e) {
print('Unexpected error: $e');
}
}