must_ be_ a_ subtype
Detalhes sobre o diagnóstico 'must_be_a_subtype' produzido pelo analisador do Dart.
The type '{0}' must be a subtype of '{1}' for '{2}'.
Descrição
#O analisador emite este diagnóstico em dois casos:
-
Em uma invocação de
Pointer.fromFunction, ou de um construtor deNativeCallable, em que o argumento de tipo (explícito ou inferido) não é um supertipo do tipo da função passada como primeiro argumento do método. -
Em uma invocação de
DynamicLibrary.lookupFunctionem que o primeiro argumento de tipo não é um supertipo do segundo argumento de tipo.
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 da função f
(String Function(int)) não é um subtipo do argumento de tipo T
(Int8 Function(Int8)):
import 'dart:ffi';
typedef T = Int8 Function(Int8);
double f(double i) => i;
void g() {
Pointer.fromFunction<T>(f, 5.0);
}
Correções comuns
#Se a função estiver correta, então altere o argumento de tipo para corresponder:
import 'dart:ffi';
typedef T = Float Function(Float);
double f(double i) => i;
void g() {
Pointer.fromFunction<T>(f, 5.0);
}
Se o argumento de tipo estiver correto, então altere a função para corresponder:
import 'dart:ffi';
typedef T = Int8 Function(Int8);
int f(int i) => i;
void g() {
Pointer.fromFunction<T>(f, 5);
}
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ê.