Flutter 中的 FocusScope.of(context).requestFocus(FocusNode()) 是什么意思?

10

我是Flutter的新手,但没有找到任何解释
FocusScope.of(context).requestFocus(FocusNode());

这段代码实际上是做什么的,我查阅了Flutter文档,但仍无法确定其确切含义。

有人能够为我解释一下吗?

每一个细节都将对我有所帮助。 谢谢。

1个回答

11
你找到的是在旧版本Flutter上隐藏键盘的过时方法。如果你想使用现代版本隐藏键盘,请参考这个答案:https://dev59.com/h1cO5IYBdhLWcg3w-V_0#56946311 回到这段代码。 FocusScope是一个小部件,它会自动为您创建,保持焦点遍历只在它下面的小部件中进行。没有这个小部件,在模态对话框中,您可以将焦点移动到后面的屏幕。 FocusScope.of(context)获取当前小部件在树中的位置(这就是所谓的context),并向上遍历树以查找最近的FocusScope小部件。
然后,在找到的FocusScope小部件上调用requestFocus方法会导致焦点移动到您传递的对象上。
由于您想聚焦于空白处(使键盘消失),因此传递一个新创建的与任何小部件都不相关联的FocusNode对象。它是一次性的,并且在此后被销毁。 FocusNode对象用于设置输入控件的焦点。如果您创建了一个并在State中保留对它的引用,则可以将其作为focusNode: _myFocusNode传递给TextFormField小部件,然后将其用作处理该输入的焦点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接