frappe_dart2 0.1.1
frappe_dart2: ^0.1.1 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/kinetsystems/frappify
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:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Write tests to ensure the changes work as expected.
- 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.