packed_annotation_alignment 진단: Packed 정렬은 1, 2, 4, 8, 16바이트만 지원돼요

packed_annotation_alignment 진단: Packed 정렬은 1, 2, 4, 8, 16바이트만 지원돼요

@Packed 어노테이션은 괄호 안에 정렬 크기를 받아요. 그런데 이 값이 아무 숫자나 될 수는 없어요. Struct의 정렬은 1, 2, 4, 8, 16바이트 중 하나여야 해요. 그래서 예를 들어 @Packed(3)처럼 허용된 값이 아닌 숫자를 넘기면, Dart 분석기가 이 진단을 내보내요.

출처: packed_annotation_alignment

본문

설명

분석기는 Packed 어노테이션의 인자가 허용된 값(1, 2, 4, 8, 16) 중 하나가 아닐 때 이 진단을 만들어요.

예시

다음 코드는 Packed 어노테이션의 인자인 3이 허용된 값이 아니기 때문에 이 진단을 만들어요.

import 'dart:ffi';

@Packed(3)
final class C extends Struct {
  external Pointer<Uint8> notEmpty;
}

흔한 해결 방법

정렬 값을 허용된 값 중 하나로 바꿔요. 아래 코드는 4로 변경한 모습이에요.

import 'dart:ffi';

@Packed(4)
final class C extends Struct {
  external Pointer<Uint8> notEmpty;
}

더 알아보기