我正在尝试使用单一模型来使用 Isar 在本地存储数据,并与 Retrofit 一起使用来处理 REST API 请求。
但是 Isar 要求所有链接类都使用数据类型
IsarLink<MyClassName>
进行定义,其中 JsonSerialized 要求它们使用 MyClassName
作为数据类型。
@Collection()
@JsonSerializable()
class UserGroup {
@JsonKey(ignore: true)
Id localId = Isar.autoIncrement; // you can also use id = null to auto increment
@ignore
@JsonKey(name: "_id")
String? id;
String name;
String description;
@ignore
Domain? domain;
@ignore
UserGroupPermissions permissions;
@ignore
Organization? organization;
@JsonKey(ignore: true)
IsarLink<Organization?> organization = IsarLink<Organization?>();
UserGroup({
this.id,
required this.name,
required this.description,
this.domain,
required this.permissions,
this.organization,
});
factory UserGroup.fromJson(Map<String, dynamic> json) => _$UserGroupFromJson(json);
Map<String, dynamic> toJson() => _$UserGroupToJson(this);
}
除了定义两个变量,例如
IsarLink<MyClassName> localOrganization
与 @JsonKey(ignore: true)
代表 Isar 和 MyClassName
与 @ignore
代表 JsonSerialized,还有其他方法可以使用单个变量来处理这两个变量吗?
几乎在任何地方都必须定义两个变量来支持两个生成器,这使得代码看起来非常混乱