问题描述
在 Dart/Flutter 中,我试图从数据文件中读取字节(每个值 2 个字节;在移动设备上)并转换为双精度。
filetoData(File filename) {
var bytes = filename.readAsBytesSync();
return bytes.buffer.asInt16List().map((e) {
print("Value: ${e.todouble()}");
return e.todouble();
}).toList();
}
返回List值都是0.0;但是,在打印语句中,我看到 e.todouble()
不是 0.0,并且确实是预期的正确值。我似乎无法退货。
例如:
I/Flutter (10636): Value: 404.0
I/Flutter (10636): Value: 356.0
I/Flutter (10636): Value: 345.0
I/Flutter (10636): Value: 297.0
I/Flutter (10636): Value: 200.0
I/Flutter (10636): Value: 164.0
返回返回的List<double>
为:
I/Flutter (10636): SIGNAL: [0.0,0.0,.....
有什么建议吗?谢谢。
解决方法
总是添加显式返回数据类型,不添加数据类型(AKA 动态)不能总是期望你想要的结果。
List<double> fileToData(File filename) {
var bytes = filename.readAsBytesSync();
return bytes.buffer.asInt16List().map((e) {
print("Value: ${e.toDouble()}");
return e.toDouble();
}).toList();
}
List<double> data = fileToData(file);