Flutter:文本表单字段的问题
Posted
技术标签:
【中文标题】Flutter:文本表单字段的问题【英文标题】:Flutter : Problems with textformfield 【发布时间】:2020-10-09 10:00:06 【问题描述】:我的应用中有一个 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););
),
在上面的 sn-p 中,textFieldInitVal
和 value1
都是 double 类型。
我面临两个不同的问题:
即使我使用textAlign: TextAlign.center
,我也无法将labelText: textFieldInitVal.toString()
居中。标签贴在 TextFormField 的左边缘。添加一些padding
会有所帮助,但它也会影响输入文本的放置方式,因此我试图避免它。
它们看起来像非常小的问题,但我无法找到摆脱这种情况的方法。我做错了什么?
【问题讨论】:
【参考方案1】:即使我使用 textAlign:TextAlign.center,我也无法将 labelText:textFieldInitVal.toString() 居中。标签贴在 TextFormField 的左边缘。添加一些填充会有所帮助,但它也会影响输入文本的放置方式,因此我试图避免它。
textAlign
属性将在字段中间对齐您在字段内写入的文本,但标签将保持在左侧。
在 onChanged: (val) 片段中,当我执行 print(val) 时,我注意到 TextFormField 无法获取小数点后的任何内容,因此在从字符串转换为 val 的 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(););
【讨论】:
我会接受这个,因为这与我解决问题的方式非常接近,但有一点需要注意:以上是关于Flutter:文本表单字段的问题的主要内容,如果未能解决你的问题,请参考以下文章