
This article walks you through a list of the best open-source packages that can help us a lot when making HTTP requests in Flutter applications. Without any further ado, lets explore the things that matter.
Table of Contents
Http
- Pub likes: 3910+
- GitHub stars: 735+
- License: BSD-3-Clause
- Written in: Dart
- Links: Pub page | GitHub repo | Official docs
This package is published by the Dart team currently the most-liked HTTP packages on pub.dev. It provides a high-level API that can make your life much easier when dealing with network tasks. You can install it by running the following command:Advertisements
flutter pub add http
Sample usage:
import 'package:http/http.dart' as http;
void sendPostRequest() async {
final url = Uri.parse('https://test.kindacode.com/api/v3/');
final response = await http.post(url, body: {'email': 'example@kindacode.com', 'name': 'Mr Happy'});
print('Response status: ${response.statusCode}');
print('Response body: ${response.body}');
}
The plugin supports retrying requests. You can use the RetryClient class to retry failing requests:
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.kindacode.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 is the fastest-growing HTTP package in the Flutter ecosystem. Its super powerful and simple to use. The package brings us many extremely useful features:
- Global configuration
- Interceptors
- FormData
- Request Cancellation
- Retrying Requests
- File Downloading
- Timeout
- Https certificate verification
- Http2
AdvertisementsYou can install Dio by running:
flutter pub add dio
And use it without writing much code:
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 has several extensions:
- dio_cookie_manager: For working with cookie
- dio_http2_adapter: For http2 stuff
Retrofit
- Pub likes: 650+
- GitHub stars: 720+
- License: MIT
- Written in: Dart, Ruby, Swift, Kotlin, Python
- Links: Pub page | GitHub repo | API reference
Retrofit is a type conversion dio client generator. It lets you write code with @Something like decorators in TypeScript. For example:
@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);
For more details, please see retrofits docs.
Chopper
- Pub likes: 360+
- GitHub stars: 560+
- License: MIT
- Written in: Dart, Shell
- Links: Pub page | GitHub repo | API reference
Similiar to Retrofit, Chopper is another HTTP client generator for Dart and Flutter. You will need to install chopper, chopper_generator, and build_runner. For more detailed information about using Chopper, please see its official documentation.
Wrapping Up
Weve gone over the list of most-liked HTTP client packages for Flutter. If youd like to gain more knowledge about Flutter and explore more new and fascinating stuff to work better with the framework, take a look at the following articles:
- Creating Masonry Layout in Flutter with Staggered Grid View
- Flutter & Hive Database: CRUD Example
- How to encode/decode JSON in Flutter
- Sorting Lists in Dart and Flutter (5 Examples)
- Flutter and Firestore Database: CRUD example
You can also check out our Flutter category page or Dart category page for the latest tutorials and examples.