跳過主內容

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)>();
  }
}