Pular para o conteúdo principal

creation_of_struct_or_union

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

Subclasses of 'Struct' and 'Union' are backed by native memory, and can't be instantiated by a generative constructor.

Descrição

#

O analisador emite este diagnóstico quando uma subclasse de Struct ou de Union é instanciada usando um construtor generativo.

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

Exemplo

#

O código a seguir produz este diagnóstico porque a classe C está sendo instanciada usando um construtor generativo:

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

Correções comuns

#

Se você precisar alocar a estrutura descrita pela classe, use o pacote ffi para isso:

dart
import 'dart:ffi';
​
import 'package:ffi/ffi.dart';
​
final class C extends Struct {
  @Int32()
  external int a;
}
​
void f() {
  final pointer = calloc.allocate<C>(4);
  final c = pointer.ref;
  print(c);
  calloc.free(pointer);
}

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