离开焦点时更改 TextFormField 的值
Change Value of TextFormField when leaving focus
我有一个 TextFormField,如果用户离开它,它应该填充特定的文本。
因此,例如,如果用户编辑该字段并输入“Test”,而我不想允许字符串“Test”,那么一旦该字段失去焦点,它就应该用“Sike!”替换文本。所以类似于 onChanged,但事件是失去焦点,而不是价值的改变,这是我目前所拥有的:
TextFormField(
controller: myController,
onChanged: (value) {
if (value == "Test"){
myController.text = "Sike!";
}
},
.............
.............
您可以这样做的一种方法是这样。
class _DemoState extends State<Demo> {
final node = FocusNode();
final tc = TextEditingController();
@override
void initState() {
node.addListener(() {
if (!node.hasFocus && tc.text == 'Test') {
tc.text = "Sike!";
}
});
super.initState();
}
@override
Widget build(BuildContext context) {
return TextFormField(
controller: tc,
focusNode: node,
);
}
}
我有一个 TextFormField,如果用户离开它,它应该填充特定的文本。 因此,例如,如果用户编辑该字段并输入“Test”,而我不想允许字符串“Test”,那么一旦该字段失去焦点,它就应该用“Sike!”替换文本。所以类似于 onChanged,但事件是失去焦点,而不是价值的改变,这是我目前所拥有的:
TextFormField(
controller: myController,
onChanged: (value) {
if (value == "Test"){
myController.text = "Sike!";
}
},
.............
.............
您可以这样做的一种方法是这样。
class _DemoState extends State<Demo> {
final node = FocusNode();
final tc = TextEditingController();
@override
void initState() {
node.addListener(() {
if (!node.hasFocus && tc.text == 'Test') {
tc.text = "Sike!";
}
});
super.initState();
}
@override
Widget build(BuildContext context) {
return TextFormField(
controller: tc,
focusNode: node,
);
}
}