如何使用Flutter将txt文件中的值读取为Bytes



实际上,我想从.txt文件中读取值,并通过Byte格式的蓝牙将它们发送到卡stm32。我尝试了这个解决方案,但没有正确发送值。我得到了这个例外:类型"Future"不是类型"List"的子类型

这是代码:

localPath() async {
String textasset = "assets/112936-bluetooth.txt";
String text = await rootBundle.loadString(textasset);
print(int.parse(text));
return int.parse(text);
}

这里是我调用函数的地方:

onWritePressed: () {
for (int i = 0; i < 4; i++)
c.write(localPath(), withoutResponse: true);
},

以下是.txt文件中某些值的示例:0x00、0xAA、0x00、0x03、0x2F、0x2F、0xCC、0xAA,0x00、0x00F、0x2A提前感谢的帮助

您正在将Future而不是列表传递给方法write。所以像这个一样更改你的代码

onWritePressed: () {
for (int i = 0; i < 4; i++){
localPath().then((val) => c.write(val, withoutResponse: true));
}
},

有关Future的更多信息,请访问Future.dev

localPath函数返回Future,因为它是异步的。你需要等待它解决。此外,正如所写的那样,Future将解析为int,而不是List<int>,因此也需要修复。

Future<List<int>> localPath() async {
final textasset = "assets/112936-bluetooth.txt";
final text = await rootBundle.loadString(textasset);
final bytes = text //
.split(',')
.map((s) => s.trim())
.map((s) => int.parse(s))
.toList();
print(bytes);
return bytes;
}

然后在您的处理程序中:

onWritePressed: () async {
final bytes = await localPath();
for (int i = 0; i < 4; i++) {
c.write(bytes, withoutResponse: true);
}
},

最新更新