我有來自 ESP32 的資料采用以下格式:數字、數字、數字,我試圖在顫振中以文本形式列印它,但我得到了無效的兩倍。
我真的閱讀了其他答案,但無法弄清楚。這是我的代碼:
String _dataParser(List<int> dataFromDevice) {
return utf8.decode(dataFromDevice);
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Expanded(
flex: 2,
child: StreamBuilder<List<int>>( **// I am getting the error here**
stream: stream,
builder:(BuildContext context, AsyncSnapshot<List<int>> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
} else if (snapshot.connectionState == ConnectionState.active ||
snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError) {
temperature = -1;
speed = -1;
pressure = -1;
flow = -1;
}
if (snapshot.hasData) {
var currentValue = _dataParser(snapshot.data);
var sensorData = currentValue.split(",");
// get the temperature
if (sensorData[0] == "nan") {
temperature = -2;
}
temperature = double.parse('$sensorData[0]');
// get the speed
if (sensorData[1] == "nan") {
speed = -2;
}
speed = double.parse('$sensorData[1]');
// get the pressure
if (sensorData[2] == "nan") {
pressure = -2;
}
pressure = double.parse('$sensorData[2]');
} else {
temperature = -3;
speed = -3;
pressure = -3;
flow = -3;
}
}
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Column(
children: [
const Text('Temperature'),
Text('$temperature'),
],
),
Column(
children: [
const Text('Speed'),
Text('$speed'),
],
),
Column(
children: [
const Text('Pressure'),
Text('$pressure'),
] ,
),
Column(
children: [
const Text('Flow'),
Text('$flow'),
],
),
],
);
}
),
),
],
);
}
問題出在這一行:
溫度 = double.parse('$sensorData[0]');
例外是:
========被小部件庫捕獲的例外=================================== 以下FormatException 被拋出構建 StreamBuilder<List>(dirty, state: _StreamBuilderBaseState<List, AsyncSnapshot<List>>#67513): Invalid double [][0] 相關的導致錯誤的小部件是 StreamBuilder<List> lib\componants\device_data。 dart:139 拋出例外時,這是堆疊 #0 double.parse (dart:core-patch/double_patch.dart:111:28) #1 _DeviceDataState.build。lib\componants\device_data.dart:160
uj5u.com熱心網友回復:
使用大括號。沒有它,它只將傳感器資料視為變數,將 [0] 視為字串。
temperature = double.parse('${sensorData[0]}');
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/334720.html
標籤:扑
