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
100
pub points
0%
popularity

Publisher

unverified uploader

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