api_request 0.0.6
api_request: ^0.0.6 copied to clipboard

api request for handle call api. every request is an action has execute method.

Api Request #

Api Request is an how to use api request action in flutter with dio client;

Adding Api Request to your project #

In your project's pubspec.yaml file,

  • Add api_request latest version to your dependencies.
# pubspec.yaml

  api_request: ^<latest version>

Config #

import 'package:api_request/api_request.dart';

void main() {
  //global config api requests;
    // set base url for all request
      baseUrl: 'https://jsonplaceholder.typicode.com/',
      // set token as string api request action will with is if auth is required
      token: '1|test-token',
      // we will call this method to get token in run time -- method must be return string
      getToken: () => yourMethodToGetToken(),
      // we will call this method to get token in run time -- method must be return Future<string>
      getAsyncToken: () => yourAysncMethodToGetToken(),
      // send default query params for all requests
      defaultQueryParameters: {'locale': 'ar'}

  • and from any pace of your code you can change config

Request Action #

that is action will execute to call api

class PostsRequestAction extends RequestAction<PostsResponse, ApiRequest> {
  bool get authRequired => false; // or true if this action need to auth we will send access_token

    // one method for this action
  Future<PostsResponse> execute({ApiRequest? request}) async {
    return PostsResponse.fromList(await get());
  // path for this api request
  String get path => 'posts';

Call Request Action #

PostsResponse response = await PostsRequestAction().execute();

ApiRequest #

when need to send data with this request create ApiRequest

class LoginApiRequest with ApiRequest{
  final String email;
  final String password;
  LoginApiRequest({required this.email,required this.password});

  Map<String, dynamic> toMap() => {
    'email': this.email, 'password': this.password

Use ApiRequest with Action #

class AuthResponse{
  final int? status;
  final String? message;
  final String? accessToken;

  AuthResponse({this.status, this.message, this.accessToken});

  factory AuthResponse.fromMap(Map<String, dynamic> map) {
    return AuthResponse(
      status: map['status'] as int,
      message: map['message'] as String,
      accessToken: map['accessToken'] as String,

class LoginRequestAction extends RequestAction<AuthResponse, LoginApiRequest>{
  bool get authRequired => false;

  Future<AuthResponse> execute({LoginApiRequest? request}) async {
    return AuthResponse.fromMap(await post(request));

  String get path => 'login';

Call Request Action #

    AuthResponse response = await LoginRequestAction().execute(LoginApiRequest(
    email: 'test@test.com',
    password: '123123'

Dynamic Path #

  • example to send data in path you need to add vars in path like this /{var}/
  • and in your request data add var name with your value like this:
class PostApiRequest with ApiRequest {
  final int? id;
  Map<String, dynamic> toMap() => {
        'id': this.id,

class PostRequestAction extends RequestAction<Post, PostApiRequest> {
  bool get authRequired => false;

  Future<Post> execute({PostApiRequest? request}) async {
    return Post.fromMap(await get(request));

  String get path => 'posts/{id}';
pub points



api request for handle call api. every request is an action has execute method.

Repository (GitHub)
View/report issues




dio, flutter


Packages that depend on api_request