struct 클래스 필드에 쓸 수 없는 타입

struct 클래스 필드에 쓸 수 없는 타입

Struct 의 하위 클래스에 있는 필드가 int, double, Array, Pointer, 또는 Struct·Union 의 하위 타입 외의 다른 타입을 가질 때 Dart analyzer가 만들어 내는 진단이에요.

출처: invalid_field_type_in_struct

본문

이 진단은 Struct 하위 클래스의 필드가 int, double, Array, Pointer, 또는 StructUnion 의 하위 타입이 아닌 다른 타입을 가질 때 발생해요. FFI에 대한 자세한 내용은 C interop using dart:ffi 문서를 참고해요.

아래 코드는 필드 str 의 타입이 String 인데, 이는 Struct 하위 클래스 필드에 허용된 타입이 아니라서 이 진단을 만들어 내요.

import 'dart:ffi';

final class C extends Struct {
  external String s;

  @Int32()
  external int i;
}

고치는 방법

필드에 허용된 타입 중 하나를 사용하면 돼요.

import 'dart:ffi';
import 'package:ffi/ffi.dart';

final class C extends Struct {
  external Pointer<Utf8> s;

  @Int32()
  external int i;
}

더 알아보기

  • C interop using dart:ffi
  • Struct, Union, Pointer, Array 타입