toRaw method

Pointer<NativeType> toRaw([
  1. int extraLength = 0,
  2. bool isCustomEvent = false
])

Implementation

Pointer toRaw([int extraLength = 0, bool isCustomEvent = false]) {
  Pointer<RawEvent> event = malloc.allocate<RawEvent>(sizeOf<RawEvent>());

  EventTarget? target = this.target;
  EventTarget? currentTarget = this.currentTarget;

  List<int> methods = [
    stringToNativeString(type).address,
    bubbles ? 1 : 0,
    cancelable ? 1 : 0,
    composed ? 1 : 0,
    timeStamp,
    defaultPrevented ? 1 : 0,
    (target != null && target.pointer != null) ? target.pointer!.address : nullptr.address,
    (currentTarget != null && currentTarget.pointer != null) ? currentTarget.pointer!.address : nullptr.address,
    sharedJSProps.address, // EventProps* props
    propLen, // int64_t props_len
    allocateLen // int64_t alloc_size;
  ];

  // Allocate extra bytes to store subclass's members.
  int nativeStructSize = methods.length + extraLength;

  final Pointer<Uint64> bytes = malloc.allocate<Uint64>(nativeStructSize * sizeOf<Uint64>());
  bytes.asTypedList(methods.length).setAll(0, methods);
  event.ref.bytes = bytes;
  event.ref.length = methods.length;
  event.ref.isCustomEvent = isCustomEvent ? 1 : 0;

  return event.cast<Pointer>();
}