在 Flutter 中发出 HTTP 请求的最佳库(2022 年)【Flutter专题31】

2022-03-30 15:35:53 浏览数 (1)

“作者:坚果 华为云享专家,InfoQ签约作者,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括Flutter,小程序,安卓,VUE,JavaScript。”

本文将向您介绍最好的开源软件包列表,这些软件包可以帮助我们在 Flutter 应用程序中发出 HTTP 请求。事不宜迟,让我们探索重要的事情。

Http

  • Pub likes: 3910
  • GitHub stars: 735
  • License: BSD-3-Clause
  • Written in: Dart
  • Links: Pub page | GitHub repo | Official docs

该包由 Dart 团队发布,目前是 pub.dev 上最受欢迎的 HTTP 包。它提供了一个高级 API,可以让您在处理网络任务时更轻松。您可以通过运行以下命令来安装它:

代码语言:javascript复制
flutter pub add http

示例用法:

代码语言:javascript复制
import 'package:http/http.dart' as http;

void sendPostRequest() async {
  final url = Uri.parse('https://test.jianguojs.com/api/v3/');
  final response = await http.post(url, body: {'email': 'example@jianguojs.com', 'name': 'Mr Happy'});
  print('Response status: ${response.statusCode}');
  print('Response body: ${response.body}');
}

该插件支持重试请求。您可以使用 RetryClient 类重试失败的请求:

代码语言:javascript复制
import 'package:http/http.dart' as http;
import 'package:http/retry.dart';

Future<void> bootstrap() async {
  final client = RetryClient(http.Client());
  try {
    print(await client.read(Uri.parse('http://test.jianguojs.com/api/v3/')));
  } finally {
    client.close();
  }
}

Dio

  • Pub likes: 3300
  • GitHub stars: 10.5k
  • License: MIT
  • Written in: Dart
  • Links: Pub page | GitHub repo | API reference

Dio 是 Flutter 生态系统中增长最快的 HTTP 包。它超级强大且易于使用。该软件包为我们带来了许多非常有用的功能:

  • 全局配置
  • 拦截器
  • 表单数据
  • 取消请求
  • 重试请求
  • 文件下载
  • 暂停
  • HTTPS证书验证
  • Http2

您可以通过运行以下命令安装 Dio:

代码语言:javascript复制
flutter pub add dio

无需编写太多代码即可使用它:

代码语言:javascript复制
import 'package:dio/dio.dart';

void getData() async {
  try {
    var response = await Dio().get('http://www.example.com');
    print(response);
  } catch (e) {
    print(e);
  }
}

Dio 有几个扩展:

  • dio_cookie_manager : 用于使用 cookie
  • dio_http2_adapter:用于 http2 的东西

Retrofit

  • Pub likes: 650
  • GitHub stars: 720
  • License: MIT
  • Written in: Dart, Ruby, Swift, Kotlin, Python
  • Links: Pub page | GitHub repo | API reference

Retrofit 是一个类型转换的dio客户端生成器。它可以让你在 TypeScript 中使用类似装饰器的**@Something**编写代码。例如:

代码语言:javascript复制
@JsonSerializable()
class MyClass {}

@PATCH("your-api-endpoint")
Future<Task> updateTaskPart(
      @Path() String id, @Body() Map<String, dynamic> map);

@PUT("your-api-endpoint")
Future<Task> updateTask(@Path() String id, @Body() Task task);

@DELETE("your-api-endpoint")
Future<void> deleteTask(@Path() String id);

@POST("your-api-endpoint")
Future<Task> createTask(@Body() Task task);

有关详细信息,请参阅API reference。

Chopper

  • Pub likes: 360
  • GitHub stars: 560
  • License: MIT
  • Written in: Dart, Shell
  • Links: Pub page | GitHub repo | API reference

与 Retrofit 类似,Chopper 是 Dart 和 Flutter 的另一个 HTTP 客户端生成器。您将需要安装chopper、chopper_generator和build_runner。有关使用 Chopper 的更多详细信息,请参阅其官方文档。

总结

我们已经浏览了 Flutter 最受欢迎的 HTTP 客户端插件列表。

0 人点赞