在Flutter中将焦点带到TextField

Ris*_*mar 18 dart flutter

自从过去几天我一直在学习颤抖,我在开发应用程序时遇到了问题.所以我有一个包含所有基本输入字段的基本表单,用户点击提交按钮后,应用程序检查文本字段的有效性.如果输入错误,应用会将焦点移回文本字段.如何将焦点移回文本字段

Gün*_*uer 27

var focusNode = new FocusNode();
var textField = new TextField(focusNode: focusNode);

FocusScope.of(context).requestFocus(focusNode);
Run Code Online (Sandbox Code Playgroud)

另请参见https://docs.flutter.io/flutter/widgets/FocusNode-class.html

  • @kosiara-BartoszKosarzycki 现在有一个专用的“unfocus”方法。`FocusScope.of(context).unfocus();` https://api.flutter.dev/flutter/widgets/FocusNode/unfocus.html (5认同)
  • 如果您想做相反的事情,即从TextField中删除焦点,则简单的方法是调用:`FocusScope.of(context).requestFocus(new FocusNode());。//移除焦点 (2认同)
  • 请注意,为了防止内存泄漏,您必须在小部件的 dispose 方法中处置 focusNode。`@override void dispose() { focusNode.dispose(); 超级.dispose(); }` (2认同)

Cop*_*oad 9

FocusScope.of(context).previousFocus();


在此处输入图片说明

Column(
  children: [
    TextField(...), // 1st TextField
    TextField(...), // 2nd TextField
    RaisedButton(
      onPressed: () => FocusScope.of(context).previousFocus(), // This is what you need
      child: Text("Go back"),
    ),
  ],
)
Run Code Online (Sandbox Code Playgroud)


Sai*_*i N 8

 TextField(
      autofocus: true,
);
Run Code Online (Sandbox Code Playgroud)

  • 这不是解决方案,因为这会自动聚焦文本字段,但不一定是OP要求的。由于他想重新聚焦另一个文本字段。 (4认同)