Appearance
ArrayAddress<T extends NativeType>
extension ArrayAddress<T extends NativeType> on Array<T>Annotations: @Since.new('3.5')
Properties
address extension no setter
Pointer<T> get addressThe 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:
dart
@Native<Void Function(Pointer<Int8>)>(isLeaf: true)
external void myFunction(Pointer<Int8> pointer);
final class MyStruct extends Struct {
@Array(10)
external Array<Int8> array;
}
void main() {
final array = Struct.create<MyStruct>().array;
myFunction(array.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.
Available on Array<T extends NativeType>, provided by the ArrayAddress<T extends NativeType> extension
Implementation
dart
external Pointer<T> get address;