description

# create<T extends Union> static method

1. @Since.new('3.4')

T create<T extends Union>([

1. TypedData typedData,
2. int offset

])

Creates a union view of bytes in `typedData`.

The created instance of the union subclass will then be backed by the bytes at TypedData.offsetInBytes plus `offset` times TypedData.elementSizeInBytes. That is, the getters and setters of the external instance variables declared by the subclass, will read an write their values from the bytes of the TypedData.buffer of `typedData`, starting at TypedData.offsetInBytes plus `offset` times TypedData.elementSizeInBytes. The TypedData.lengthInBytes of `typedData` must be sufficient to contain the sizeOf of the union subclass. It doesn't matter whether the `typedData` is, for example, a Uint8List, a Float64List, or any other TypedData, it's only treated as a view into a ByteBuffer, through its TypedData.buffer, TypedData.offsetInBytes and TypedData.lengthInBytes.

If `typedData` is omitted, a fresh ByteBuffer, with precisely enough bytes for the sizeOf of the created union, is allocated on the Dart heap, and used as memory to store the union fields.

If `offset` is provided, the indexing into `typedData` is offset by `offset` times TypedData.elementSizeInBytes.

Example:

    final class MyUnion extends Union {
      @Int32()
      external int a;

      @Float()
      external double b;

      /// Creates Dart managed memory to hold a `MyUnion` and returns the
      /// `MyUnion` view on it.
      factory MyUnion.a(int a) {
        return Union.create()..a = a;
      }

      /// Creates Dart managed memory to hold a `MyUnion` and returns the
      /// `MyUnion` view on it.
      factory MyUnion.b(double b) {
        return Union.create()..b = b;
      }

      /// Creates a [MyUnion] view on [typedData].
      factory MyUnion.fromTypedData(TypedData typedData) {
        return Union.create(typedData);
      }
    }

To create a union object from a Pointer, use UnionPointer.ref.

## Implementation

    @Since('3.4')
    external static T create<T extends Union>([TypedData typedData, int offset]);