在蜂巢中保存继承类-Flutter
我正在开发一个项目,您可以将音频、视频和形状(如方框、圆形、三角形等)添加到特定的工作区,并且您可以更改工作区中所有这些对象的位置,
因此我创建了一个抽象类包含共享属性 在所有对象之间,如偏移量、类型、大小等......
abstract class ElementProperites {
//! Element_Properites Offest
@HiveField(0)
Offset _elementOffest = Offset.zero;
Offset get elementOffest => _elementOffest;
set setElementOffest(Offset value) => _elementOffest = value;
//!Element_Properites Type
@HiveField(1)
String _elementType = '';
String get elementType => _elementType;
set setElementType(String value) => _elementType = value;
//!Element_Properites Size
@HiveField(2)
Size _elementSize = Size.zero;
Size get elementSize => _elementSize;
set setElementSize(Size value) => _elementSize = value;
//!Element_Properites defualt Size
@HiveField(3)
Size _elementdefualtSize = Size.zero;
Size get elementdefualtSize => _elementdefualtSize;
set setElementdefualtSize(Size value) => _elementdefualtSize = value;
//!Element showBorder
@HiveField(4)
bool _elementShowBorder = false;
bool get elementShowBorder => _elementShowBorder;
set setElementShowBorder(bool value) => _elementShowBorder = value;
//!Element Look
@HiveField(5)
bool _elementLockOption = false;
bool get elementLockOption => _elementLockOption;
set setElementLockOption(bool value) => _elementLockOption = value;
//! The index of Page Where Element Exist
@HiveField(6)
int _pageNumber = 0;
int get pageNumber => _pageNumber;
set setPageNumber(int value) => _pageNumber = value;
//? Hive Box
//! save method
void saveElement({required Object object});
//! intial Hive Box
Future initHiveBox({required String hiveBoxName});
}
并且每个对象都具有扩展抽象类的类。
例如
@HiveType(typeId: 1)
class Shape extends ElementProperites {
//!Shape Strok Color
@HiveField(7)
Color _shapeStrokColor = Colors.red;
Color get shapeStrokColor => _shapeStrokColor;
set setShapeStrokColor(Color value) => _shapeStrokColor = value;
//!Shape Color
@HiveField(8)
Color _shapeColor = Colors.red;
Color get shapeColor => _shapeColor;
set setShapeColor(Color value) => _shapeColor = value;
//!Shape Strok width
@HiveField(9)
double _shapeWidthColor = 5.0;
double get shapeWidthColor => _shapeWidthColor;
set setShapeWidthColor(double value) => _shapeWidthColor = value;
@override
void saveElement({required var object}) {}
@override
Future initHiveBox({required String hiveBoxName}) async =>
await Hive.openBox(hiveBoxName);
}
,现在当我尝试使用 hive 保存形状类时,形状类时,抽象类的字段未显示在 shape.g.dart 中 我如何保存抽象类的字段
I'm working on project where you can Add Audio,video and Shapes(like box,circle,triangle,etc..) to specific workspace and you can change the location of all these objects in the workspace
so I made an abstract class that Contains the shared properties
between all the objects like offset,type,size etc ...
abstract class ElementProperites {
//! Element_Properites Offest
@HiveField(0)
Offset _elementOffest = Offset.zero;
Offset get elementOffest => _elementOffest;
set setElementOffest(Offset value) => _elementOffest = value;
//!Element_Properites Type
@HiveField(1)
String _elementType = '';
String get elementType => _elementType;
set setElementType(String value) => _elementType = value;
//!Element_Properites Size
@HiveField(2)
Size _elementSize = Size.zero;
Size get elementSize => _elementSize;
set setElementSize(Size value) => _elementSize = value;
//!Element_Properites defualt Size
@HiveField(3)
Size _elementdefualtSize = Size.zero;
Size get elementdefualtSize => _elementdefualtSize;
set setElementdefualtSize(Size value) => _elementdefualtSize = value;
//!Element showBorder
@HiveField(4)
bool _elementShowBorder = false;
bool get elementShowBorder => _elementShowBorder;
set setElementShowBorder(bool value) => _elementShowBorder = value;
//!Element Look
@HiveField(5)
bool _elementLockOption = false;
bool get elementLockOption => _elementLockOption;
set setElementLockOption(bool value) => _elementLockOption = value;
//! The index of Page Where Element Exist
@HiveField(6)
int _pageNumber = 0;
int get pageNumber => _pageNumber;
set setPageNumber(int value) => _pageNumber = value;
//? Hive Box
//! save method
void saveElement({required Object object});
//! intial Hive Box
Future initHiveBox({required String hiveBoxName});
}
and each one of objects have class extend the abstract class.
for example shape class
@HiveType(typeId: 1)
class Shape extends ElementProperites {
//!Shape Strok Color
@HiveField(7)
Color _shapeStrokColor = Colors.red;
Color get shapeStrokColor => _shapeStrokColor;
set setShapeStrokColor(Color value) => _shapeStrokColor = value;
//!Shape Color
@HiveField(8)
Color _shapeColor = Colors.red;
Color get shapeColor => _shapeColor;
set setShapeColor(Color value) => _shapeColor = value;
//!Shape Strok width
@HiveField(9)
double _shapeWidthColor = 5.0;
double get shapeWidthColor => _shapeWidthColor;
set setShapeWidthColor(double value) => _shapeWidthColor = value;
@override
void saveElement({required var object}) {}
@override
Future initHiveBox({required String hiveBoxName}) async =>
await Hive.openBox(hiveBoxName);
}
now when I tried to save shape class with hive, the fields of abstract class not showing in shape.g.dart
how i can save the fields of abstract class
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
到现在为止,它可能很晚了,但是对于来这里寻找答案的任何人,我都会添加这个答案。
现在尝试继承有效。这是我的示例代码: -
实体类: -
从实体类继承的类: -
这是构建跑步者生成的适配器: -
请注意,在基类和派生类中,字段索引应该有所不同。我还添加了Jsonseriziziziziz,以证明两者都可以一起工作,并且在大多数情况下通常都需要JSON。
Its probably quite late by now but for anyone coming here searching for an answer I add this answer.
Try it now the inheritance works. Here's my sample code:-
The Entity class:-
A class that inherits from the Entity class:-
And this is the adapter that build runner generated:-
Please note that field indexes should be different in the base class and the derived class. I have also added JsonSerializable too to show both can work together and JSON is usually required in most situations.