frappe_dart2 0.1.2 copy "frappe_dart2: ^0.1.2" to clipboard
frappe_dart2: ^0.1.2 copied to clipboard

A comprehensive Dart wrapper for interacting with the Frappe API, providing easy access to its features and enabling seamless communication with Frappe-based systems.

Frappe Dart #

A comprehensive Dart wrapper for interacting with the Frappe API, providing easy access to its features and enabling seamless communication with Frappe-based systems.

🚧 Note: This project is currently under construction and is not production-ready. Expect significant changes as the project evolves.

Example App #

Looking for a working example? Check out the official example app here:
👉 [ https://github.com/osamaalhimyari/frappe_dart2.git]( https://github.com/osamaalhimyari/frappe_dart2.git)

This separate repository demonstrates how to integrate and use frappe_dart in a real-world Flutter application.

Installation #

To get started with the frappe_dart package, add it to your project's pubspec.yaml dependencies:

dependencies:
  frappe_dart: ^0.0.6

Usage #

Once installed, you can use the wrapper to interact with the Frappe API. Here's an example of how to perform a basic request:

import 'package:frappe_dart2/frappe_dart.dart';

void main() async {
  final frappeClient = FrappeV15(
    baseUrl: 'https://your-frappe-url.com',
  );

  try {
    final authResponse = await frappeClient.login(
      LoginRequest(
        usr: 'your-username',
        pwd: 'your-password',
      ),
    );

    frappeClient.cookie = authResponse.cookie;

    final sidebarItems = await frappeClient.getDeskSideBarItems();

    final page = sidebarItems.message!.pages!
        .firstWhere((element) => element.name == 'Users');

    final deskPage = await frappeClient.getDesktopPage(
      DesktopPageRequest(
        name: page.name,
      ),
    );

    print(deskPage.toJson());
  } catch (error) {
    print('Error: $error');
  }
}

How to extend #

You can extend the functionality of frappe_dart to support additional custom API endpoints using Dart's extension methods.

import 'package:http/http.dart' as http;

extension FrappeV15Extensions on FrappeV15 {
  Future<Map<String, dynamic>> newApiEndPoint() async {
    final url = '$baseUrl/api/method/new_api_endpoint';

    final response = await dio.get<Map<String, dynamic>>(
      url,
      headers: {
        if (cookie != null) 'Cookie': cookie,
      },
    );

    return response.data!;
  }
}

Contributing #

We welcome contributions to improve and extend the functionality of frappe_dart. If you’d like to contribute, please follow these steps:

  1. Fork the repository.
  2. Create a new branch for your feature or bug fix.
  3. Write tests to ensure the changes work as expected.
  4. Submit a pull request with a detailed explanation of your changes.

For bug reports, feature requests, or any issues, please open an issue on the GitHub repository.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

1
likes
155
points
40
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A comprehensive Dart wrapper for interacting with the Frappe API, providing easy access to its features and enabling seamless communication with Frappe-based systems.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

dio, equatable, socket_io_client

More

Packages that depend on frappe_dart2