“作者:坚果 华为云享专家,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 客户端插件列表。