【问题标题】:How to convert SI Units in Flutter如何在 Flutter 中转换 SI 单位
【发布时间】:2020-11-29 14:41:34
【问题描述】:

我正在尝试制作一个简单的应用程序来转换重量,速度等单位...如何从文本字段中获取输入并进行转换(如果是 1 公斤,则乘以 1000 并显示在下一个文本域)。我正试图让它双向工作。因此,如果一个人在第二个字段中输入,它将转换并输出到第一个字段。 我怎样才能做出关于颤振的 if 语句。谢谢您的帮助。代码是 下面。

class Weight extends StatefulWidget {

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

class _WeightState extends State<Weight> {
  String _value1;
  String _value2;
  final myController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Material(
      child: new Center(
        child: new Column(
          children: [
            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((){

                  _value1 = value;
                  print("$value");
                });
              },
              hint: Text('Select Item'),
              value: _value1,

            ),
            new TextField(
              controller: myController,
              decoration: InputDecoration(
                border: OutlineInputBorder(),
                labelText: ("Enter amount in $_value1"),
              ),
            ), //Add Text Field
            
            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(
              decoration: InputDecoration(
                border: OutlineInputBorder(),
                labelText: ("Enter amount in $_value2"),
              ),
            ),  //Add Text Field

            new Padding(padding: EdgeInsets.only(top: 50.0)),
            new RaisedButton(onPressed: (){
            },
              child: new Text("Convert", style: TextStyle(
                fontSize: 25.0,
                color: Colors.black,
              ),),
              padding: EdgeInsets.all(8.0),
              elevation: 15.0,
            )],),),);}}

【问题讨论】:

    标签: android android-studio flutter dart


    【解决方案1】:

    你不需要 if 语句来做你想做的事,但需要两个控制器。我想告诉你如何实现它。

                //At the top of the class
                TextEditingController _controller1;
                TextEditingController _controller2;
                static final Map<String,double> changes= {
                   "gram-kilogram": 1000,
                   "kilogram-gram": 0.001
                };
    
                initState(){
                  super.initState();
                  controller=TextEditingController();
                  controller2=TextEditingController();
                }
                dispose(){
                  super.dispose();
                  controller.dispose();
                  controller2.dispose();
                }
    
                //TEXT FIELDS
                new TextField(
                  controller: controller;
                  onChanged: (text) => {
                    controller2.text=(int.parse(text)*changes[value1+"-"+value2]).toString();
                  }
                  decoration: InputDecoration(
                    border: OutlineInputBorder(),
                    labelText: ("Enter amount in $_value2"),
                  ),
                ),  //Add Text Field
    
                new TextField(
                  controller: controller2;
                  onChanged: (text) => {
                    controller.text=(int.parse(text)*changes[value2+"-"+value1]).toString();
                  }
                  decoration: InputDecoration(
                    border: OutlineInputBorder(),
                    labelText: ("Enter amount in $_value2"),
                  ),
                ),  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多