Pular para o conteúdo principal

native_field_not_static

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

Native fields must be static.

Descrição

#

O analisador emite este diagnóstico quando um campo de instância em uma classe foi anotado com @Native. Campos nativos se referem a variáveis globais em C, C++ ou outras linguagens nativas, enquanto campos de instância em Dart são específicos de uma instância daquela classe. Por isso, campos nativos precisam ser static.

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 campo f na classe C é @Native, mas não é static:

dart
import 'dart:ffi';
​
class C {
  @Native<Int>()
  external int f;
}

Correções comuns

#

Ou torne o campo static:

dart
import 'dart:ffi';
​
class C {
  @Native<Int>()
  external static int f;
}

Ou mova-o para fora da classe, caso em que nenhum modificador static explícito é necessário:

dart
import 'dart:ffi';
​
class C {}
​
@Native<Int>()
external int f;

Se você pretendia anotar um campo de instância que deveria fazer parte de um struct, omita a anotação @Native:

dart
import 'dart:ffi';
​
final class C extends Struct {
  @Int()
  external int f;
}

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