"The http_request_f package simplifies HTTP request operations in Dart and Flutter. Our package allows you to perform HTTP requests, automatically handle JSON serialization and deserialization, and conduct various URI operations, all using a single function

Features

Simplified HTTP Requests: Make HTTP GET, POST, PUT, DELETE, and other requests with a single, straightforward function call. Streamlined JSON Handling: Our package automates JSON serialization and deserialization, enabling you to work directly with Dart objects. Effortless URI Manipulation: Easily manage URI operations, including building, modifying, and handling URL parameters. Customization: Customize requests by adding headers, cookies, and other parameters tailored to your use case. Easy Response Handling: Obtain HTTP responses and process them effortlessly, whether they contain JSON, text, or other formats.

Getting started

import 'package:http_request_f/http_request_f.dart';
import 'package:http_request_f/request_status/error_type.dart';

  final HttpRequest httpRequest =
      HttpRequest(baseUrl: "https://jsonplaceholder.typicode.com");

  getData() async {
    //get Request
    try {
      final jsonResponse = await httpRequest.init(
          path: "posts", requestType: RequestType.get); //decoded data
      print(jsonResponse);

      for (var element in jsonResponse) {
        print("element ${element['id']} - ${element['title']}");
      }
    } catch (e) {
      print(ErrorType.get(e));
    }
  }

  postData() async {
    //post Request
    try {
      Map<String, dynamic> body = {
        "title": 'foo',
        "body": 'bar',
      };
      final response = await httpRequest.init(
          path: "posts", requestType: RequestType.post, body: body);
      print(response);
    } catch (e) {
      print(ErrorType.get(e));
    }
  }
  //put and patch Request

  updateData() async {
    try {
      Map<String, dynamic> body = {
        "title": 'foo',
        "body": 'bar',
      };
      final response = await httpRequest.init(
          path: "posts/1",
          requestType: RequestType.put,
          body: body); // use RequestType.put or RequestType.patch
      print(response);
    } catch (e) {
      print(ErrorType.get(e));
    }
  }

  //delete Request
  deleteData() async {
    try {
      final response = await httpRequest.init(
        path: "posts/1",
        requestType: RequestType.delete,
      );
      print(response);
    } catch (e) {
      print(ErrorType.get(e));
    }
  }

  //set token
  setToken() async {
    Future<bool> tokenSet = httpRequest.setAuthToken(
        token:
            "your-token"); // the default token type is Bearer and this token is automaticaly added to to headers to perform requests

    try {
      Map<String, dynamic> body = {
        "title": 'foo',
        "body": 'bar',
      };
      final response = await httpRequest.init(
          path: "posts", requestType: RequestType.post, body: body);
      print(response);
    } catch (e) {
      print(e);
      print(ErrorType.get(e));
    }
  }

Additional information