variable_length_array_not_last
Variable length 'Array's must only occur as the last field of Structs.
Description
#
The analyzer produces this diagnostic when a variable length inline Array
is not the last member of a Struct.
For more information about FFI, see C interop using dart:ffi.
Example
#
The following code produces this diagnostic because the field a0 has a
type with three nested arrays, but only two dimensions are given in the
Array annotation:
dart
import 'dart:ffi';
final class C extends Struct {
@Array.variable()
external Array<Uint8> a0;
@Uint8()
external int a1;
}
Common fixes
#Move the variable length inline Array to be the last field in the struct.
dart
import 'dart:ffi';
final class C extends Struct {
@Uint8()
external int a1;
@Array.variable()
external Array<Uint8> a0;
}
If the inline array has a fixed size, annotate it with the size:
dart
import 'dart:ffi';
final class C extends Struct {
@Array(10)
external Array<Uint8> a0;
@Uint8()
external int a1;
}