【问题标题】:error: The argument type 'double?' can't be assigned to the parameter type 'num'错误:参数类型“双?”不能分配给参数类型“num”
【发布时间】: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


【解决方案1】:

您向 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);

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 2021-09-21
    • 2019-04-13
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 2022-07-26
    相关资源
    最近更新 更多