在沼泽 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;
}
我想使用 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;
}