non_constant_type_argument
'{0}' 的类型参数必须在编译时已知,因此它们不能是类型参数。
描述
#当方法的类型参数需要在编译时已知,但使用了在编译时无法确定值的类型参数作为类型参数时,分析器会产生此诊断。
有关 FFI 的更多信息,请参阅 使用 dart:ffi 的 C 互操作。
示例
#以下代码会产生此诊断,因为 Pointer.asFunction
的类型参数必须在编译时已知,但使用了在编译时未知的类型参数 R
作为类型参数
dart
import 'dart:ffi';
typedef T = int Function(int);
class C<R extends T> {
void m(Pointer<NativeFunction<T>> p) {
p.asFunction<R>();
}
}
常见修复
#移除任何类型参数的使用
dart
import 'dart:ffi';
class C {
void m(Pointer<NativeFunction<Int64 Function(Int64)>> p) {
p.asFunction<int Function(int)>();
}
}