address property

Pointer<Uint8> address

The memory address of the underlying data.

An expression of the form expression.address denoting this address can only occurr as an entire argument expression in the invocation of a leaf Native external function.

Example:

@Native<Void Function(Pointer<Uint8>)>(isLeaf: true)
external void myFunction(Pointer<Uint8> pointer);

void main() {
  final list = Uint8List(10);
  myFunction(list.address);
}

The expression before .address is evaluated like the left-hand-side of an assignment, to something that gives access to the storage behind the expression, which can be used both for reading and writing. The .address then gives a native pointer to that storage.

The .address is evaluated just before calling into native code when invoking a leaf Native external function. This ensures the Dart garbage collector will not move the object that the address points in to.

Implementation

external Pointer<Uint8> get address;