Pular para o conteúdo principal

must_be_a_native_function_type

Detalhes sobre o diagnóstico 'must_be_a_native_function_type' produzido pelo analisador do Dart.

The type '{0}' given to '{1}' must be a valid 'dart:ffi' native function type.

Descrição

#

O analisador emite este diagnóstico quando uma invocação de Pointer.fromFunction, DynamicLibrary.lookupFunction ou de um construtor de NativeCallable tem um argumento de tipo (explícito ou inferido) que não é um tipo de função nativo.

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 tipo T pode ser qualquer subclasse de Function, mas o argumento de tipo de fromFunction precisa ser um tipo de função nativo:

dart
import 'dart:ffi';
​
int f(int i) => i * 2;
​
class C<T extends Function> {
  void g() {
    Pointer.fromFunction<T>(f, 0);
  }
}

Correções comuns

#

Use um tipo de função nativo como argumento de tipo da invocação:

dart
import 'dart:ffi';
​
int f(int i) => i * 2;
​
class C<T extends Function> {
  void g() {
    Pointer.fromFunction<Int32 Function(Int32)>(f, 0);
  }
}

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ê.