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

1 回复

更多关于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');
  }
}
回到顶部