save inherit class in Hive - Flutter

Viewed 198

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

0 Answers
Related