Dio 是一个强大、易于使用、支持多种功能的网络请求库,用于在 Flutter 应用程序中进行网络请求。它提供了许多功能,如请求/响应拦截器、超时处理、文件上传/下载等。在本教程中,我们将介绍如何在 Flutter 应用程序中使用 Dio 进行网络请求。

  1. 添加 Dio 依赖

首先,在你的 Flutter 项目中的 pubspec.yaml 文件中添加 Dio 依赖:

dependencies:
  dio: ^4.0.0

然后运行 flutter pub get 命令来安装 Dio。

  1. 发起网络请求

接下来,我们将演示如何使用 Dio 发起一个简单的 GET 请求。

import 'package:dio/dio.dart';

void fetchData() async {
  Dio dio = Dio();
  
  try {
    Response response = await dio.get('https://jsonplaceholder.typicode.com/posts/1');
    print(response.data);
  } catch (e) {
    print('Error: $e');
  }
}

在上面的代码中,我们首先创建了一个 Dio 实例,并使用 get 方法发起了一个 GET 请求。请求的 URL 是一个示例 API,返回了 ID 为 1 的 Post 对象。当请求成功时,我们打印出返回的数据;当请求失败时,我们打印出错误信息。

  1. 添加请求拦截器和响应拦截器

Dio 还提供了请求拦截器和响应拦截器,允许我们在发送请求之前和收到响应后进行一些处理。下面是一个示例:

import 'package:dio/dio.dart';

void fetchData() async {
  Dio dio = Dio();

  dio.interceptors.add(InterceptorsWrapper(
    onRequest: (options, handler) {
      // 在发送请求之前做一些处理
      print('Sending request to ${options.uri}');
      return handler.next(options);
    },
    onResponse: (response, handler) {
      // 在收到响应后做一些处理
      print('Received response: ${response.data}');
      return handler.next(response);
    },
    onError: (error, handler) {
      // 在请求发生错误时做一些处理
      print('Error occurred: $error');
      return handler.next(error);
    },
  ));

  try {
    Response response = await dio.get('https://jsonplaceholder.typicode.com/posts/1');
    print(response.data);
  } catch (e) {
    print('Error: $e');
  }
}

在上面的代码中,我们使用 interceptors.add 方法添加了一个拦截器,其中包括 onRequestonResponseonError 方法。在这些方法中,我们可以对请求和响应进行处理,例如打印请求的 URL、响应的数据或错误信息。

这就是使用 Dio 进行网络请求的基础教程。通过学习这些内容,你可以开始在 Flutter 应用程序中使用 Dio 发起网络请求,同时利用其强大的功能来处理请求和响应。希望这篇教程对你有所帮助!