Pular para o conteúdo principal

argument_must_be_a_constant

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

Argument '{0}' must be a constant.

Descrição

#

O analisador emite este diagnóstico quando uma invocação de Pointer.asFunction ou de DynamicLibrary.lookupFunction tem um argumento isLeaf cujo valor não é uma expressão constante.

O analisador também emite este diagnóstico quando uma invocação de Pointer.fromFunction ou de NativeCallable.isolateLocal tem um argumento exceptionalReturn cujo valor não é uma expressão constante.

Para mais informações sobre FFI, consulte Interoperabilidade com C usando dart:ffi.

Exemplo

#

O código a seguir produz este diagnóstico porque o valor do argumento isLeaf é um parâmetro e, portanto, não é uma constante:

dart
import 'dart:ffi';
​
int Function(int) fromPointer(
  Pointer<NativeFunction<Int8 Function(Int8)>> p,
  bool isLeaf,
) {
  return p.asFunction(isLeaf: isLeaf);
}

Correções comuns

#

Se houver uma constante adequada que possa ser usada, substitua o argumento por uma constante:

dart
import 'dart:ffi';
​
const isLeaf = false;
​
int Function(int) fromPointer(Pointer<NativeFunction<Int8 Function(Int8)>> p) {
  return p.asFunction(isLeaf: isLeaf);
}

Se não houver uma constante adequada, substitua o argumento por um literal booleano:

dart
import 'dart:ffi';
​
int Function(int) fromPointer(Pointer<NativeFunction<Int8 Function(Int8)>> p) {
  return p.asFunction(isLeaf: true);
}

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