【问题标题】:Clearing text field won't erase all data清除文本字段不会删除所有数据
【发布时间】:2020-12-01 13:59:46
【问题描述】:

您好,我正在尝试转换不同的重量单位。当我输入金额并清除时,第二个文本字段仍会显示金额,而不是显示“0”。我怎样才能解决这个问题。下面有2张图片。

[

我也想在删除后删除 2000。 我的代码如下。

class Weight extends StatefulWidget {

  @override
  _WeightState createState() => _WeightState();
}

class _WeightState extends State<Weight> {
  String _value1;
  String _value2;
  TextEditingController _controller;
  TextEditingController _controller2;
  static final Map<String,double> changes= {
    "gram-kilogram": 0.001,
    "kilogram-gram": 1000,
    "kilogram-kilogram": 1,
    "gram-gram": 1,
  };
  initState(){
    super.initState();
    _controller=TextEditingController();
    _controller2=TextEditingController();
  }
  dispose(){
    super.dispose();
    _controller.dispose();
    _controller2.dispose();
  }

这里有更多代码我删除了,因为代码太多。


            new TextField(
              controller: _controller,
              onChanged: (text)=>{
                _controller2.text=(double.parse(text)*changes[_value1+"-"+_value2]).toString(),
              },
              decoration: InputDecoration(
                border: OutlineInputBorder(),
                labelText: ("Enter amount in $_value1")
              ),
              keyboardType: TextInputType.number,
              style: new TextStyle(
                fontFamily: "Poppins",
              ),
            ),
            new Padding(padding: EdgeInsets.only(top: 50.0)),
            new DropdownButton(
              items: [
                DropdownMenuItem(child: Text("Kilogram"),
                  value: "kilogram",
                  onTap: (){
                  },),
                DropdownMenuItem(child: Text("gram"),
                  value: "gram",
                  onTap: (){
                  },),
              ],
              onChanged: (String value){
                setState((){

                  _value2 = value;
                  print("$value");
                });
              },
              hint: Text('Select Item'),
              value: _value2,
            ),
            new TextField(
              controller: _controller2,
              onChanged: (text)=>{
                _controller.text=(double.parse(text)*changes[_value2+"-"+_value1]).toString(),
              },
              decoration: InputDecoration(
                  border: OutlineInputBorder(),
                  labelText: ("Enter amount in $_value2")
              ),),],),),);}}

【问题讨论】:

    标签: android android-studio flutter dart


    【解决方案1】:
    TextField(controller: _controller,
              onChanged: (text) => {
      if(text.isEmpty)
           _controller2.text = '0.0';
      else
           _controller2.text=(double.parse(text)*changes[_value1+""+_value2]).toString(),
      setState((){});
    },
    

    【讨论】:

      猜你喜欢
      • 2022-11-09
      • 1970-01-01
      • 2020-04-29
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多