跳到主要内容

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