packFloats method

void packFloats(
  1. dynamic data
)

Packs a (possibly nested) list of numbers as little-endian float32 in row-major order. Accepts scalars, or arbitrarily nested Lists of num.

Implementation

void packFloats(dynamic data) {
  final List<double> flat = [];
  void flatten(dynamic x) {
    if (x is num) {
      flat.add(x.toDouble());
    } else if (x is List) {
      for (final dynamic e in x) {
        flatten(e);
      }
    } else {
      throw ArgumentError(
          'packFloats expects num or nested List<num>, got $x');
    }
  }

  flatten(data);

  final ByteData bd = ByteData(flat.length * 4);
  for (int i = 0; i < flat.length; i++) {
    bd.setFloat32(i * 4, flat[i], Endian.little);
  }
  _builder.add(bd.buffer.asUint8List());
}