Flutter 颤振如何使用TextField中的当前值更新提示文本
我设置了一个文本字段,所以当我点击它时,它会清除该值-否则你必须先删除当前值,然后才能键入新值。问题是,当我单击时,可以看到原始提示文本,这可能会非常混乱,因为它看起来像是被重置了 例如,原始提示文本在文本字段中显示Flutter 颤振如何使用TextField中的当前值更新提示文本,flutter,dart,textfield,Flutter,Dart,Textfield,我设置了一个文本字段,所以当我点击它时,它会清除该值-否则你必须先删除当前值,然后才能键入新值。问题是,当我单击时,可以看到原始提示文本,这可能会非常混乱,因为它看起来像是被重置了 例如,原始提示文本在文本字段中显示25,然后我输入一个新值48。但如果我再次单击以再次输入新值,则在焦点清除后,原始的25提示文本值将再次显示 如何使提示文本更新为以前的值(在清除之前),以便单击时显示相同的值?这是表单字段中的正常行为,因此我希望实现这一点。在清除textField控制器之前,请使用控制器中的值se
25
,然后我输入一个新值48
。但如果我再次单击以再次输入新值,则在焦点清除后,原始的25
提示文本值将再次显示
如何使提示文本更新为以前的值(在清除之前),以便单击时显示相同的值?这是表单字段中的正常行为,因此我希望实现这一点。在清除textField控制器之前,请使用控制器中的值setState更新提示变量。那就行了 为清楚起见,答案是将分配给
hintText
的hint
字符串的值设置为控制器文本值的最后一个值,就在清除之前。这是在FocusNode
侦听器中使用setState
完成的
String _hint;
final TextEditingController control;
final Function onchanged;
FocusNode _focusNode;
@override
void initState() {
super.initState();
_focusNode = FocusNode();
_focusNode.addListener(() {
if (_focusNode.hasFocus) {
setState(() {
_hint = control.text;
});
control.clear();
}
});
}
TextField(
focusNode: _focusNode,
controller: control,
onChanged: onchanged,
decoration: InputDecoration(
hintText: _hint,
),
),
你必须把代码写出来才能得到答案。否则,这应该是一个评论。你可以复制粘贴我的代码,并编辑必要的内容。提示是当前为提示文本传递的参数。您正在试图使提示文本等于textfield controller.Text的最后一个值吗?
String _hint;
final TextEditingController control;
final Function onchanged;
FocusNode _focusNode;
@override
void initState() {
super.initState();
_focusNode = FocusNode();
_focusNode.addListener(() {
if (_focusNode.hasFocus) {
setState(() {
_hint = control.text;
});
control.clear();
}
});
}
TextField(
focusNode: _focusNode,
controller: control,
onChanged: onchanged,
decoration: InputDecoration(
hintText: _hint,
),
),