跳到主要內容

variable_length_array_not_last

可變長度的 'Array' 只能作為 Struct 的最後一個欄位出現。

描述

#

當可變長度的內聯 Array 不是 Struct 的最後一個成員時,分析器會產生此診斷資訊。

有關 FFI 的更多資訊,請參閱 使用 dart:ffi 進行 C 互操作

示例

#

以下程式碼會產生此診斷資訊,因為欄位 a0 的型別包含三個巢狀陣列,但在 Array 註釋中只給定了兩個維度

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;
}