Search packages, repositories and app categories

Package detailsv0.1.36

api_manager

A simple package for manage api request easily with the help of flutter dio api.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
301
Likes
25
Pub points
140

Install package

flutter pub add api_manager

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

A lightweight Flutter package designed to simplify API request management using the Dio HTTP client. It provides an easy-to-use interface for making HTTP calls, handling responses, and managing errors consistently across projects. Built with developer experience in mind, it streamlines common tasks like authentication headers, request interception, and response parsing. Ideal for apps requiring reliable and maintainable network communication.

Use cases

  • Handling REST API calls
  • Managing authentication tokens
  • Centralizing API endpoints
  • Error handling and retry logic
  • Request/response logging
  • Simplifying network layer code

Key features

  • Built on top of Dio
  • Easy configuration and setup
  • Supports interceptors
  • Automatic error handling
  • Modular and reusable design
  • Clean separation of concerns

Suitable for

  • Flutter beginners learning networking
  • Projects needing consistent API patterns
  • Apps with multiple API endpoints
  • Teams prioritizing maintainable code
  • Developers wanting minimal boilerplate

Considerations

  • Requires understanding of Dio basics
  • Limited to HTTP requests (no WebSocket support)
  • May need additional setup for complex auth flows
  • Not suitable for very large-scale enterprise apps without customization

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

api_manager pub package

A simple flutter API to manage rest api request easily with the help of flutter dio.

Get started

Install

Add dependency

pub package

dependencies:
  api_manager: $latest_version
Super simple to use
import 'package:api_manager/api_manager.dart';

void main() async {
 
  ApiResponse response = await ApiManager().request(
    requestType: RequestType.GET,
    route: "your route",
  );
  print(response);
}
Config in a base manager

class ApiRepository {
  
  static final ApiRepository _instance = ApiRepository._internal(); /// singleton api repository
  ApiManager _apiManager;

  factory ApiRepository() {
    return _instance;
  }

  /// base configuration for api manager
  ApiRepository._internal() {
    _apiManager = ApiManager();
    _apiManager.options.baseUrl = BASE_URL; /// EX: BASE_URL = https://google.com/api/v1 
    _apiManager.options.connectTimeout = 100000;
    _apiManager.options.receiveTimeout = 100000;
    _apiManager.responseBodyWrapper('data'); /// This is used to parse the response without data attribute, some use case will shown below
    _apiManager.enableLogging(responseBody: true, requestBody: false); /// enable api logging EX: response, request, headers etc
    _apiManager.enableAuthTokenCheck(() => "access_token"); /// EX: JWT/PASSPORT auth token store in cache
  }
}

Examples

Suppose we have a response model like this:

class SampleResponse{
  String name;
  int id;

  SampleResponse.fromJson(jsonMap): 
        this.name = jsonMap['name'],
        this.id = jsonMap['id'];
}

and actual api response json structure is:

{
    "data": {
        "name": "md afratul kaoser taohid",
        "id": "id"
    }
}

#Now we Performing a GET request :

 Future<ApiResponse<SampleResponse>> getRequestSample() async =>
      await _apiManager.request<SampleResponse>(
        requestType: RequestType.GET,
        route: 'api_route',
        requestParams: {"userId": 12}, /// add params if required
        isAuthRequired: true, /// by set it to true, this request add a header authorization from this method enableAuthTokenCheck();
        responseBodySerializer: (jsonMap) {
          return SampleResponse.fromJson(jsonMap); /// parse the json response into dart model class
        },
      );

#Now we Performing a POST request :

 Future<ApiResponse<SampleResponse>> postRequestSample() async =>
      await _apiManager.request<SampleResponse>(
        requestType: RequestType.POST,
        route: 'api_route',
        requestBody: {"userId": 12}, /// add POST request body
        isAuthRequired: true, /// by set it to true, this request add a header authorization from this method enableAuthTokenCheck();
        responseBodySerializer: (jsonMap) {
          return SampleResponse.fromJson(jsonMap); /// parse the json response into dart model class
        },
      );

#Now er performing a multipart file upload request :

  Future<ApiResponse<void>> updateProfilePicture(
    String filePath,
  ) async {
    MultipartFile multipartFile =
        await _apiManager.getMultipartFileData(filePath);
    FormData formData = FormData.fromMap({'picture': multipartFile});

    return await _apiManager.request(
      requestType: RequestType.POST,
      isAuthRequired: true,
      requestBody: formData,
      route: 'api_route',
    );
  }

Categories

Dependencies

Dependency list 2 items

Source repository

Projects using this package

No data available yet.