6.3 C
New York
Sunday, March 26, 2023

Best Libraries for Making HTTP Requests in Flutter (2022)

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, let’s explore the things that matter.

Table of Contents

Http

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

Dio is the fastest-growing HTTP package in the Flutter ecosystem. It’s 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:

Retrofit

Advertisements

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 retrofit’s docs.

Chopper

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

We’ve gone over the list of most-liked HTTP client packages for Flutter. If you’d 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:

You can also check out our Flutter category page or Dart category page for the latest tutorials and examples.

Related Articles

Latest Articles