在沼泽 BlobColumn 中存储双打列表

store list of doubles in moor BlobColumn

我想使用 moor 包的 BlobColumn 来存储整数列表和双精度列表。 我可以轻松保存整数列表,因为 Uint8List 中的 blob 类型。但是当我存储双列表时我得到这个错误:

error: The argument type 'List<double>' can't be assigned to the parameter type 'Uint8List'.

我找不到任何关于在 blob 列中为 moor 包保存任何对象列表的文档或示例。

如有任何帮助,我们将不胜感激。

终于解决了我的问题,写下这两个助手,写这两个方法来转换数据,以便在数据库的BlobColumn中插入和读取

  List<num> convertUint8ListToDoubleList(Uint8List uint8list) {
    var bdata = ByteData.view(uint8list.buffer);
    return List.generate(
        (uint8list.length / 8).round(), (index) => bdata.getFloat64(index * 8));
  }

  Uint8List convertDoubleListToUint8List(List<num> doubleList) {
    var uint8List = new Uint8List(8 * doubleList.length);
    var bdata = new ByteData.view(uint8List.buffer);
    for (int i = 0; i < doubleList.length; i++) {
      bdata.setFloat64(i * 8, doubleList[i]);
    }
    return uint8List;
  }