最近几天我一直在学习Flutter,在开发我的应用时遇到了一个问题。 我有一个包含所有基本输入字段的基本表单,当用户单击提交按钮时,应用程序检查文本字段的有效性。 如果存在错误输入,则应用程序将焦点返回到文本字段。
如何将焦点移回到文本字段?
var focusNode = FocusNode();
var textField = TextField(focusNode: focusNode);
FocusScope.of(context).requestFocus(focusNode);
// or
focusNode.requestFocus();
另请参阅
TextField(
autofocus: true,
);
FocusNode name_focus = FocusNode();
TextField(
controller: name_Controller,
focusNode: name_focus,
decoration: InputDecoration(
errorText: name_validate ? 'Enter Name' : null,
labelStyle:
TextStyle(color: HexColor(HexColor.gray_text)),
labelText: "Name",
border: OutlineInputBorder(),
enabledBorder: OutlineInputBorder(
borderSide:
BorderSide(color: HexColor(HexColor.gray))),
focusedBorder: OutlineInputBorder(
borderSide:
BorderSide(color: HexColor(HexColor.gray))),
),
),
检查验证名称不为空,自动滚动我的页面以显示。
if(name_Controller.text.isEmpty){
name_validate=true;
name_focus.requestFocus();
}
FocusScope.of(context).requestFocus(new FocusNode()); //remove focus
- kosiara - Bartosz Kosarzyckiunfocus
方法。使用FocusScope.of(context).unfocus();
。参考文档:https://api.flutter.dev/flutter/widgets/FocusNode/unfocus.html - Can Rau@override void dispose() { focusNode.dispose(); super.dispose(); }
- Saman Sattari