Skip to content

Support for BigInt #215

@jhonantanErnane

Description

@jhonantanErnane

I'm trying to create a wrapper for a class

class AttendanceEntity extends OriginalDomainEntity {
  AttendanceEntity({
    required this.visitTypeOid,
    required this.attendanceNumber,
    required super.originalOid,
  });
  final BigInt attendanceNumber;
  final int visitTypeOid;
}

But when override $getProperty, can't return BigInt property, I didn't find the representation of dart_eval for BigInt.

class $AttendanceEntity extends $OriginalDomainEntity implements AttendanceEntity, $Instance {
  $AttendanceEntity.wrap(this.$value) : _superclass = $Object($value);

  static final $type = BridgeTypeSpec(ClassPlugin.packageName, 'AttendanceEntity').ref;

  @override
  final AttendanceEntity $value;

  @override
  AttendanceEntity get $reified => $value;

  final $Instance _superclass;

  @override
  void $setProperty(Runtime runtime, String identifier, $Value value) => _superclass.$setProperty(runtime, identifier, value);

  @override
  BigInt get attendanceNumber => $value.attendanceNumber;

  @override
  int get visitTypeOid => $value.visitTypeOid;

  static final $declaration = BridgeClassDef(
    BridgeClassType($type),
    constructors: {
      '': BridgeConstructorDef(
        BridgeFunctionDef(
          returns: BridgeTypeAnnotation($type),
          params: List<BridgeParameter>.from(
            [
              BridgeParameter('attendanceNumber', CoreTypes.num.ref.annotate, false),
              BridgeParameter('visitTypeOid', CoreTypes.int.ref.annotate, false),
            ],
            growable: false,
          ).toList(),
        ),
      )
    },
  );

  static $Value $new(Runtime runtime, $Value? target, List<$Value?> args) => $AttendanceEntity.wrap(
        AttendanceEntity(
          visitTypeOid: args[0]?.$value,
          attendanceNumber: args[1]?.$value,
          originalOid: args[2]?.$value,
        ),
      );

  @override
  $Value? $getProperty(Runtime runtime, String identifier) {
    switch (identifier) {
      case 'originalOid':
        return $value.originalOid == null ? $null() : $int($value.originalOid!);
      case 'attendanceNumber':
        return $BigInt($value.attendanceNumber); /// <= HERE
      case 'visitTypeOid':
        return $int($value.visitTypeOid);
      default:
        return _superclass.$getProperty(runtime, identifier);
    }
  }
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions