我设置了一个文本字段,因此当我单击它时,它将清除该值-否则,您必须先删除当前值,然后才能键入一个新值。问题是,当我单击时,可以看到原始的提示文本,因为它看起来像已被重置,所以可能会造成混乱。
例如,原始提示文本在文本字段中显示
25
,然后输入新值48
。但是,如果我再次单击以再次输入新值,则原来的25
提示文本值会在焦点消失后再次显示。
final TextEditingController control;
final Function onchanged;
FocusNode _focusNode;
@override
void initState() {
super.initState();
_focusNode = FocusNode();
_focusNode.addListener(() {
if (_focusNode.hasFocus) control.clear();
});
}
TextField(
focusNode: _focusNode,
controller: control,
onChanged: onchanged,
decoration: InputDecoration(
hintText: hint,
),
),
如何使提示文本更新为先前的值(在清除之前),以便在单击时显示相同的值?这是表单字段中的正常行为,所以我想实现这一目标。
答案 0 :(得分:0)
在清除textField控制器之前,请使用setState与控制器中的值更新提示变量。那应该做的工作。
答案 1 :(得分:0)
为清楚起见,答案是将分配给hint
的{{1}}字符串的值设置为控制器文本值的最后一个值,就在清除之前。这是在hintText
侦听器中使用FocusNode
完成的。
setState