メインコンテンツにスキップ

variable_length_array_not_last

可変長の「Array」は、Struct の最後のフィールドでのみ発生する必要があります。

説明

#

アナライザーは、可変長のインライン ArrayStruct の最後のメンバーでない場合に、この診断を生成します。

FFI の詳細については、dart:ffi を使用した C の相互運用 を参照してください。

#

以下のコードは、フィールド a0 が 3 つのネストされた配列の型を持っていますが、Array アノテーションで 2 つの次元しか与えられていないため、この診断を生成します。

dart
import 'dart:ffi';

final class C extends Struct {
  @Array.variable()
  external Array<Uint8> a0;

  @Uint8()
  external int a1;
}

一般的な修正

#

可変長のインライン Array を、struct の最後のフィールドになるように移動してください。

dart
import 'dart:ffi';

final class C extends Struct {
  @Uint8()
  external int a1;

  @Array.variable()
  external Array<Uint8> a0;
}

インライン配列のサイズが固定されている場合は、サイズをアノテーションで指定してください。

dart
import 'dart:ffi';

final class C extends Struct {
  @Array(10)
  external Array<Uint8> a0;

  @Uint8()
  external int a1;
}