leaf_ call_ must_ not_ take_ handle
Detalhes sobre o diagnóstico 'leaf_call_must_not_take_handle' produzido pelo analisador do Dart.
FFI leaf call can't take arguments of type 'Handle'.
Descrição
#
O analisador gera este diagnóstico quando o valor do argumento isLeaf em uma invocação de
Pointer.asFunction ou de DynamicLibrary.lookupFunction é true e a função que seria retornada teria um parâmetro do tipo
Handle.
Para mais informações sobre FFI, consulte interoperabilidade com C usando dart:ffi.
Exemplo
#
O código a seguir gera este diagnóstico porque a função p tem um parâmetro do tipo Handle, mas o argumento
isLeaf é true:
import 'dart:ffi';
void f(Pointer<NativeFunction<Void Function(Handle)>> p) {
p.asFunction<void Function(Object)>(isLeaf: true);
}
Correções comuns
#
Se a função tem pelo menos um parâmetro do tipo Handle, então remova o argumento isLeaf:
import 'dart:ffi';
void f(Pointer<NativeFunction<Void Function(Handle)>> p) {
p.asFunction<void Function(Object)>();
}
Se nenhum dos parâmetros da função for Handle, então corrija a informação de tipo:
import 'dart:ffi';
void f(Pointer<NativeFunction<Void Function(Int8)>> p) {
p.asFunction<void Function(int)>(isLeaf: true);
}
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ê.