Flutter Odoo集成插件odoo_provider的使用
Flutter Odoo集成插件odoo_provider的使用
本文将描述如何创建一个Odoo Provider来对模型执行数据库操作(如插入、更新、删除等)。
该插件依赖于 odoo 包。
使用方法
1. 创建一个实现 IOdooModel
的类
class User implements IOdooModel {
final int? id; // 假
final String? login; // 假
final String? name; // 假
User({this.id, this.login, this.name});
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
@override
User fromJson(Map<String, dynamic> json) {
return User.fromJson(json);
}
@override
int? getId() {
return this.id;
}
@override
String getTableName() => "res.users";
@override
Map<String, dynamic> toJsonWithReduce(bool Function(MapEntry<String, dynamic> p1) validate) {
Map<String, dynamic> fields = this.toJson();
Map<String, dynamic> tmp = {};
for (final field in fields.entries) {
if (validate(field) == false) {
continue;
}
tmp.putIfAbsent(field.key, () => field.value);
}
return tmp;
}
@override
Map<String, dynamic> toJsonWithoutNullAndId() {
return toJsonWithReduce((MapEntry entry) {
if (entry.value == null || entry.key == 'id') {
return false;
}
return true;
});
}
@override
List<String> getColumns() {
List<String> resp = [];
final tmp = this.toJson();
for (final entry in tmp.keys) {
resp.add(entry);
}
return resp;
}
}
User _$UserFromJson(Map<String, dynamic> json) {
return User(
id: json['id'] as int,
login: json['login'] as String,
name: json['name'] as String);
}
Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
'id': instance.id,
'login': instance.login,
'name': instance.name
};
如果实现 IOdooModel
类的过程太繁琐,可以考虑使用 odoo_provider_builder 包来简化。
2. 将你的类分配给 OdooProvider
final odoo = Odoo(
Connection(url: Url(Protocol.http, "localhost", 8069), db: 'odoo'),
);
await odoo.connect(Credential("admin", "admin"));
final userProvider = OdooProvider(adapter: odoo, model: User());
// 插入数据
await userProvider.insert(User(login: "test2222", name: "test"));
// 更新数据
await userProvider.update(User(id: 1, login: "updatedTest", name: "updatedName"));
// 删除数据
await userProvider.delete(User(id: 1));
// 查询数据
final users = await userProvider.search([["login", "=", "test2222"]]);
更多关于Flutter Odoo集成插件odoo_provider的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复