native_ field_ invalid_ type
Detalhes sobre o diagnóstico 'native_field_invalid_type' produzido pelo analisador do Dart.
'{0}' is an unsupported type for native fields. Native fields only support pointers, arrays or numeric and compound types.
Descrição
#
O analisador emite este diagnóstico quando um campo anotado com @Native tem um
tipo que não é suportado para campos nativos.
Campos nativos suportam ponteiros, arrays, tipos numéricos e subtipos de
Compound (ou seja, structs ou unions). Outros subtipos de NativeType, como
Handle ou NativeFunction, não são permitidos como campos nativos.
Funções nativas devem ser usadas com funções externas em vez de campos externos.
Handles não são suportados porque não há como carregar e armazenar objetos Dart em ponteiros de forma transparente.
Para mais informações sobre FFI, consulte interoperabilidade com C usando dart:ffi.
Exemplo
#
O código a seguir gera este diagnóstico porque o campo free usa um tipo
nativo não suportado, NativeFunction:
import 'dart:ffi';
@Native<NativeFunction<Void Function()>>()
external void Function() free;
Correções comuns
#
Se você pretendia vincular uma função nativa existente com um campo
NativeFunction, use métodos @Native no lugar:
import 'dart:ffi';
@Native<Void Function(Pointer<Void>)>()
external void free(Pointer<Void> ptr);
Para vincular um campo que armazena um ponteiro de função em C, use um tipo de ponteiro para o campo Dart:
import 'dart:ffi';
@Native()
external Pointer<NativeFunction<Void Function(Pointer<Void>)>> free;
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ê.