Flutter 颤振:textformfield的问题

Flutter 颤振:textformfield的问题,flutter,dart,Flutter,Dart,我的应用程序中有一个textformfield,如下所示: TextFormField( //maxLength: 02, textAlign: TextAlign.center, keyboardType: TextInputType.numberWithOptions(decimal: true), decoration: InputDecoration( labelText:

我的应用程序中有一个textformfield,如下所示:

TextFormField(
           //maxLength: 02,
           textAlign: TextAlign.center,
           keyboardType: TextInputType.numberWithOptions(decimal: true),
           decoration: InputDecoration(
              labelText: textFieldInitVal.toString(),
              contentPadding: const EdgeInsets.all(0),
              border: OutlineInputBorder(
                  borderSide: BorderSide(
                  color: Colors.black54,
                  ),
                ),
                focusedBorder: OutlineInputBorder(
                   borderSide: BorderSide(
                     color: Colors.blue,
                     ),
                   ),
                ),
              //initialValue: textFieldInitVal.toString(),
              onChanged: (val) {
               if (int.parse(val) > 24) {
                  setState(() {
                    errorTxt = 'ERROR: Value cannot be more than 24 Hrs';
                  });
               } else {
                  setState(() {errorTxt = '';});
                  setState(() {value1 = int.parse(val).toDouble();});
                  //setState(() {value1 = double.parse(val);});
               }
             }
         ),
在上面的代码段中,
textFieldInitVal
value1
都是double类型

我面临两个不同的问题:

  • 即使使用
    textAlign:textAlign.center
    ,也无法将
    labelText:textFieldInitVal.toString()居中。标签将移动并粘贴到TextFormField的左边缘。添加一些
    padding
    会有所帮助,但它也会影响输入文本的放置方式,因此我试图避免这样做

  • onChanged:(val){
    一段中,当我执行
    print(val)
    时,我注意到TextFormField在十进制值之后没有任何内容,因此当从
    val
    的字符串转换为double时,我只得到整数

  • 这些问题看起来很小,但我无法找到解决办法。我做错了什么

    即使我使用textAlign:textAlign.center,我也无法将labelText:textFieldInitVal.toString()居中。标签会移动并粘贴到TextFormField的左边缘。添加一些填充有帮助,但它也会影响输入文本的放置方式,因此我试图避免它

    属性<代码>文本> <代码>将在字段的中间对齐您在字段中写入的文本,但标签将保留在左侧。


    在onChanged:(val){piece中,当我进行打印(val)时,我注意到TextFormField在十进制值之后没有任何内容,因此在将val的string转换为double时,我只得到整数

    关于这个问题,在转换时需要使用
    double
    类而不是
    int
    类来获取小数

                  onChanged: (val) {
                   if (double.parse(val) > 24) {
                      setState(() {
                        errorTxt = 'ERROR: Value cannot be more than 24 Hrs';
                      });
                   } else {
                     print(double.parse(val).toDouble());
                      setState(() {errorTxt = '';});
                      setState(() {value1 = int.parse(val).toDouble();});
                   }
                 }
    

    我接受这个,因为这与我解决问题的方式非常接近,但有一点需要注意: