Flutter集成Axelor SDK插件flutter_axelor_sdk的使用
Flutter集成Axelor SDK插件flutter_axelor_sdk的使用
flutter_axelor_sdk
强大的、实用的、可扩展且高度可定制的API集合,通过消除样板代码来简化与Axelor服务器的通信。
目录
开始使用
添加依赖
在pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter_axelor_sdk:
git:
url: https://github.com/Abdktefane/flutter-axelor-sdk.git
ref: v0.0.1 # 您可以跟踪开发版本 => ref: master
初始化在main.dart
void main() {
Axelor.initialize(
builder: AxelorBuilder(
client: Dio(), // 使用Dio作为HTTP客户端
domain: 'com.axelor.testserver.base.db.', // 替换为您的Axelor服务器前缀
),
);
runApp(const App());
}
示例
示例:带分页和复杂搜索条件的联系人搜索
Axelor.search(
model: Contacts.model, // 自动构建端点
baseDomain: Contacts.baseDomain, // 自动构建端点
mapper: Contacts.fromJson, // 自动将JSON解码并映射到类对象
page: 0, // 分页支持
body: AxelorBody( // 构造请求体的语法糖
fields: const ['fullName', 'email'], // 要检索的字段
sortBy: const ['fullName', '-createdOn'], // 排序字段
criteria: AxelorCriteria.or([ // 复杂搜索条件
'email'.like('%gmail.com'), // 匹配以gmail.com结尾的邮箱
'lang'.equal('FR'), // 语言为法语
'age'.between('18', '40'), // 年龄在18到40之间
AxelorCriteria.and([ // 复合条件
'firstName'.like('j%'), // 名字以j开头
'lastName'.like('s%') // 姓氏以s开头
])
]),
),
);
如果不使用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%'}
]
}
]
}
]
}
},
);
// 解析JSON响应
final Map<String, dynamic> jsonResponse = jsonDecode(response.data);
// 检查响应是否成功
if ((jsonResponse['status'] as int?) != 0) {
// 将错误传递给UI
return;
}
// 将JSON映射到Contact类
final contacts = Contacts.fromJson(jsonResponse['data']);
} catch (ex, st) {
// 将通用错误传递给UI
}
1 回复
更多关于Flutter集成Axelor SDK插件flutter_axelor_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter项目中集成flutter_axelor_sdk
插件可以帮助你与Axelor ERP系统进行交互。以下是如何在Flutter项目中集成和使用flutter_axelor_sdk
插件的步骤:
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加flutter_axelor_sdk
插件的依赖。
dependencies:
flutter:
sdk: flutter
flutter_axelor_sdk: ^1.0.0 # 请使用最新版本
然后运行flutter pub get
来获取依赖。
2. 初始化SDK
在你的Flutter应用中,你需要在应用启动时初始化flutter_axelor_sdk
。通常,你可以在main.dart
文件中进行初始化。
import 'package:flutter/material.dart';
import 'package:flutter_axelor_sdk/flutter_axelor_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Axelor SDK
await AxelorSDK.initialize(
baseUrl: 'https://your-axelor-instance.com', // 你的Axelor实例的URL
apiKey: 'your-api-key', // 你的API密钥
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Axelor Flutter App',
home: HomeScreen(),
);
}
}
3. 使用SDK进行API调用
初始化完成后,你可以在应用中使用AxelorSDK
来进行各种API调用。以下是一些常见的操作示例:
获取数据
import 'package:flutter/material.dart';
import 'package:flutter_axelor_sdk/flutter_axelor_sdk.dart';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
List<dynamic> data = [];
@override
void initState() {
super.initState();
fetchData();
}
Future<void> fetchData() async {
try {
var response = await AxelorSDK.get('/ws/rest/ModelName'); // 替换为你的模型名称
setState(() {
data = response['data'];
});
} catch (e) {
print('Error fetching data: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Axelor Data'),
),
body: ListView.builder(
itemCount: data.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(data[index]['name']), // 替换为你的字段名称
);
},
),
);
}
}
创建数据
Future<void> createData() async {
try {
var response = await AxelorSDK.post(
'/ws/rest/ModelName', // 替换为你的模型名称
body: {
'field1': 'value1',
'field2': 'value2',
// 添加其他字段
},
);
print('Data created: ${response['data']}');
} catch (e) {
print('Error creating data: $e');
}
}
更新数据
Future<void> updateData(String id) async {
try {
var response = await AxelorSDK.put(
'/ws/rest/ModelName/$id', // 替换为你的模型名称和ID
body: {
'field1': 'newValue1',
'field2': 'newValue2',
// 更新其他字段
},
);
print('Data updated: ${response['data']}');
} catch (e) {
print('Error updating data: $e');
}
}
删除数据
Future<void> deleteData(String id) async {
try {
await AxelorSDK.delete('/ws/rest/ModelName/$id'); // 替换为你的模型名称和ID
print('Data deleted');
} catch (e) {
print('Error deleting data: $e');
}
}
4. 处理错误
在进行API调用时,可能会遇到各种错误。你可以使用try-catch
块来捕获和处理这些错误。
try {
var response = await AxelorSDK.get('/ws/rest/ModelName');
// 处理响应
} catch (e) {
print('Error: $e');
// 显示错误信息给用户
}