FocusScope.of(context).requestFocus(FocusNode()); 是什么意思?在颤振中意味着什么?

Sur*_*j M 11 flutter

我是颤振的新手,没有任何内容可以解释什么
FocusScope.of(context).requestFocus(FocusNode());

事实上确实如此。我浏览了 Flutter 文档,但无法弄清楚这到底意味着什么。

谁能向我解释一下吗?

每一个细节都会有所帮助。谢谢。

Ale*_*kin 11

您发现的是在旧版本的 Flutter 上隐藏键盘的过时方法。如果您想使用现代版本隐藏键盘,请参阅此答案:/sf/answers/3986241801/

回到这段代码。

FocusScope是在树上的某个位置自动为您创建的小部件。它将焦点遍历仅保留在树中位于其下方的小部件上。如果没有这个小部件,在模式对话框中,您可能会将焦点移动到其后面的屏幕上。

FocusScope.of(context)获取树中当前小部件的位置(这就是实际情况context)并沿着树向上查找最近的FocusScope小部件。

然后,requestFocus找到的FocusScope小部件上的方法会使焦点移动到您传递的对象。

由于您不想专注于任何事情(以使键盘消失),因此您传递了一个FocusNode不与任何小部件关联的新创建的对象。它是一次性的,之后会被销毁。

FocusNode对象用于将焦点设置在输入控件上。如果您创建一个并在 中保留对它的引用State,则可以将其传递给TextFormFieldwidget as focusNode: _myFocusNode,然后将其用作句柄以将焦点设置在该输入上。