flutter_axelor_sdk 0.0.1 copy "flutter_axelor_sdk: ^0.0.1" to clipboard
flutter_axelor_sdk: ^0.0.1 copied to clipboard

Powerful, helpful, extensible and highly customizable API's that wrap http client to make communication easier with Axelor server with boilerplate code free.

flutter_axelor_sdk #

Powerful, helpful, extensible and highly customizable API's that wrap http client to make communication easier with Axelor server with boilerplate code free.

Table of contents #

Get Started #

Add dependency

flutter_axelor_sdk:  
    git:    
     url: https://github.com/Abdktefane/flutter-axelor-sdk.git
     ref: v0.0.1  # you can track the development version => ref: master

initial in main.dart

void main()  {
  Axelor.initialize(
    builder: AxelorBuilder(
      client: Dio(),
      domain: 'com.axelor.testserver.base.db.', // replace with your axelor server prefix
    ),
  );
  runApp(const App());
}

Example #

Let's take searching for contacts example (with pagination and complex search criteria)

Axelor.search(
  model: Contacts.model,                      // auto end point construct
  baseDomain: Contacts.baseDomain,            // auto end point construct
  mapper: Contacts.fromJson,                  // Auto json decode and map to class object
  page: 0,                                    // page pagination support
  body: AxelorBody(                           // Syntactic sugar to construct body
    fields: const ['fullName', 'email'],
    sortBy: const ['fullName', '-createdOn'],
    criteria: AxelorCriteria.or([
      'email'.like('%gmail.com'),
      'lang'.equal('FR'),
      'age'.between('18', '40'),
      AxelorCriteria.and(['firstName'.like('j%'), 'lastName'.like('s%')])
    ]),
  ),
);

If we want to achieve the same function without Axelor Sdk

try {
  final response = await client.post(
    '/ws/rest/com.axelor.contact.db.Contact/search',
    data: {
      'offset': 0,
      'limit': 10,
      'fields': ['fullName', 'email'],
      'sortBy': ['fullName', '-createdOn'],
      'data': {
        'criteria': [
          {
            'operator': 'or',
            'criteria': [
              {'fieldName': 'email', 'operator': 'like', 'value': '%gmail.com'},
              {'fieldName': 'lang', 'operator': '=', 'value': 'FR'},
              {'fieldName': 'age', 'operator': 'between', 'value': 18, 'value2': 40},
              {
                'operator': 'and',
                'criteria': [
                  {'fieldName': 'firstName', 'operator': 'like', 'value': 'j%'},
                  {'fieldName': 'lastName', 'operator': 'like', 'value': 's%'}
                ]
              }
            ]
          }
        ]
      }
    },
  );
  // decode to json
  final Map<String, dynamic> jsonResponse = jsonDecode(response.data);
  // check if success response or error happen
  if ((jsonResponse['status'] as int?) != 0) {
    // propagate error to ui
    return;
  }

  // map json to Contact Class
  final contacts = Contacts.fromJson(jsonResponse['data']);
} catch (ex, st) {
  // propagate general error to ui
}

Features #

  • Compatible: Compatible with all your existing code so you can adopt when and where you want.
  • Less code: Do more with less code and avoid entire classes of bugs, so code is simple and easy to maintain.
  • Highly customizable : The defaults settings will cover you but if not almost every thing is customizable.
  • Architecture-agnostic: Works with any architecture approach.
  • enterprise-ready: All code is fully tested so it's save to use in production.
  • well documented: Each feature is well documented.

Axelor APIs #

You can discover all api's features in documentation. Each api is well documented .

Advanced Use #

  • Pagination:
  • Token Refresh:
  • Log Error:
  • Retry logic:

Contributing #

You can help us make this project better, feel free to open an new issue or a pull request.

0
likes
120
points
27
downloads

Publisher

unverified uploader

Weekly Downloads

Powerful, helpful, extensible and highly customizable API's that wrap http client to make communication easier with Axelor server with boilerplate code free.

Repository (GitHub)
View/report issues
Contributing

Documentation

Documentation
API reference

License

BSD-3-Clause (license)

Dependencies

dio, equatable, flutter, json_annotation

More

Packages that depend on flutter_axelor_sdk