address_ receiver
Detalhes sobre o diagnóstico 'address_receiver' produzido pelo analisador do Dart.
The receiver of '.address' must be a concrete 'TypedData', a concrete 'TypedData' '[]', an 'Array', an 'Array' '[]', a Struct field, or a Union field.
Descrição
#
O analisador emite este diagnóstico quando o getter .address é usado
em um receptor cujo tipo estático não é um dos tipos FFI permitidos. O
getter .address é usado para obter um Pointer para a memória
subjacente de uma estrutura de dados FFI.
O receptor de .address deve ser um dos seguintes:
- Uma instância concreta de
TypedData(por exemplo,Uint8List). - Um elemento de uma instância concreta de
TypedDataacessado via[]. - Uma instância de
Array<T>(dedart:ffi). - Um elemento de uma instância de
Array<T>acessado via[]. -
Um campo de uma subclasse de
StructouUnion, se o tipo desse campo forArray<T>, umStructaninhado ou umaUnionaninhada. - Uma instância de
StructouUnion.
Exemplo
#O código a seguir produz este diagnóstico para diversos receptores incorretos:
import 'dart:ffi';
final class MyStruct extends Struct {
@Uint8()
external int x;
@Uint8()
external int y;
}
@Native<Void Function(Pointer)>(isLeaf: true)
external void nativeLeafCall(Pointer ptr);
void main() {
final struct = Struct.create<MyStruct>();
final y = struct.y;
// Incorrect: The receiver is not a struct field, but some integer.
nativeLeafCall(y.address);
}
Correções comuns
#
Garanta que o receptor do getter .address seja um dos tipos permitidos.
O getter .address serve para obter um Pointer para a memória de
instâncias de TypedData, Array, Struct ou Union, ou de certos
campos/elementos delas.
import 'dart:ffi';
@Native<Void Function(Pointer)>(isLeaf: true)
external void nativeLeafCall(Pointer ptr);
final class MyStruct extends Struct {
@Uint8()
external int x;
@Uint8()
external int y;
}
void main() {
final struct = Struct.create<MyStruct>();
// Correct: The receiver is a struct field.
nativeLeafCall(struct.y.address);
}
Salvo indicação em contrário, a documentação neste site reflete Dart 3.13.7. Relatar um problema.
Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.