我正在尝试将一个单位值从一个转换为另一个。 (公斤 --> 克)作为。转换值时出现以下错误。
我在另一个页面有一张地图。如下
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();
和帮助将不胜感激。
答案 0 :(得分:0)
您向 Map 声明了错误的值
Map<String, double> changes= new HashMap<>();
changes.put("gram-kilogram", 0.01);
changes.put("kilogram-gram", 1000);
changes.put("kilogram-kilogram", 1);
changes.put("gram-gram", 1);