argument_must_be_a_constant
参数“{0}”必须是一个常量。
描述
#当调用 Pointer.asFunction
或 DynamicLibrary.lookupFunction
时,如果其 isLeaf
参数的值不是常量表达式,分析器会产生此诊断信息。
当调用 Pointer.fromFunction
或 NativeCallable.isolateLocal
时,如果其 exceptionalReturn
参数的值不是常量表达式,分析器也会产生此诊断信息。
有关 FFI 的更多信息,请参阅 使用 dart:ffi 进行 C 互操作。
示例
#以下代码会产生此诊断信息,因为 isLeaf
参数的值是一个形参,因此不是常量
dart
import 'dart:ffi';
int Function(int) fromPointer(
Pointer<NativeFunction<Int8 Function(Int8)>> p, bool isLeaf) {
return p.asFunction(isLeaf: isLeaf);
}
常见修复方法
#如果存在可用的合适常量,请将参数替换为该常量
dart
import 'dart:ffi';
const isLeaf = false;
int Function(int) fromPointer(Pointer<NativeFunction<Int8 Function(Int8)>> p) {
return p.asFunction(isLeaf: isLeaf);
}
如果不存在合适的常量,请将参数替换为布尔值字面量
dart
import 'dart:ffi';
int Function(int) fromPointer(Pointer<NativeFunction<Int8 Function(Int8)>> p) {
return p.asFunction(isLeaf: true);
}