从 dart:typed_data 添加到列表

Append to list from dart:typed_data

Dart typed_data 库包含的列表(例如 Uint8ListUint16List 等)比传统的 List 更有效,并且在您需要时特别方便使用二进制数据。但是,所有这些列表都是固定大小的列表,因此无法在列表创建后扩展(或附加到列表)或收缩列表。当生成列表的大小在创建时未知时,此限制会导致真正的问题。

考虑以下示例:

Uint8List getEven(Uint8List in)
{
    Uint8List out = new Uint8List(0);

    for (num i = 0; i < in.length; ++i)
    {
        if (in[i] % 2 == 0)
            out.add(in[i]); // <- This will throw an exception since Uint8List  is fixed-length
    }

    return out;
}

是否有任何解决此问题的方法,或者如果我需要 append/resize 功能,我是否必须使用 List<num> 来处理二进制数据?

是的,内置 dart:typed_data 库中的列表是不可变的。

不过,还有一个typed_data package on pub that provides mutable typed data implementations。我想我还没有尝试过,但我希望它们(仍然)有效。

Uint8Buffer 等同于您要查找的列表。