【发布时间】:2021-10-03 12:12:35
【问题描述】:
我正在尝试将单位值从一个转换为另一个。 (千克-> 克)如。转换值时出现以下错误。
我在不同的页面中有一张地图。如下
final Map<String,double> changes= {
"gram-kilogram": 0.01,
"kilogram-gram": 1000,
"kilogram-kilogram": 1,
"gram-gram": 1,
};
还有主页容器中的代码,
String _val1 = "Kilogram";
String _val2 = "Kilogram";
TextEditingController _controller1 = TextEditingController();
TextEditingController _controller2 = TextEditingController();
initState(){
super.initState();
_controller1=TextEditingController();
_controller2=TextEditingController();
}
dispose(){
super.dispose();
_controller1.dispose();
_controller2.dispose();
}
还有 2 个文本字段和 2 个下拉按钮。
TextField(
controller: _controller1,
onChanged: (text) {
if(text.isEmpty)
_controller2.text = "0.0";
else
_controller2.text = (double.parse(text)*changes[_val1+"-"+_val2]).toString();
},
),
DropdownButton<String>(
items: <DropdownMenuItem<String>>[
DropdownMenuItem(child: Text("Kilogram"), value: "Kilogram", onTap: () {
_val1 = _val1;
},),
DropdownMenuItem(child: Text("Gram"),
value: "Gram",
onTap: () {
_val1 = _val1;
},),
],
onChanged: (value) {
setState(() {
this._val1 = value!;
});
},
value: _val1,
),
我收到了主题中提到的错误。它发生在这一行。 _controller2.text = (double.parse(text)changes[_val1+"-"+_val2]).toString(); 和帮助将不胜感激。
【问题讨论】:
-
你能用“_controller2.text = (double.parse(text)changes[_val1+”-“+_val2]).toString();”提一下吗你想要什么样的结果......??
-
@LaKiThakare 假设用户在左侧菜单按钮上选择公斤,在右侧菜单按钮上选择克。然后当用户在左侧文本字段中键入 1 时,我希望右侧文本字段自动更改为 1000。
-
好吧,有你的问题.....而不是解析尝试使用tryparse ...即double.tryParse(文本)* ....等等。
-
@LaKiThakare 然后我会得到同样的错误和错误:不能无条件调用运算符'*',因为接收者可以是'null'。这个错误也是。如果有帮助,我添加了整个代码 - codeshare.io/vwAzZk
-
好吧,有你的问题.....尝试使用 tryParse 并注意空安全性......而不是解析......即 double.tryParse(text) ?? 0.0 * .... 等等。这应该可以工作.. 忘了提到空安全...
标签: android flutter android-studio dart textfield