我是 flutter 的新手,没有什么可以解释什么
FocusScope.of(context).requestFocus(FocusNode());
确实如此。我查看了 Flutter 文档,但无法弄清楚这到底意味着什么。
谁能给我解释一下?
每一个细节都会有所帮助。 谢谢。
答案 0 :(得分:1)
您发现的是在旧版 Flutter 上隐藏键盘的过时方法。如果您想使用现代版本隐藏键盘,请参阅此答案:https://stackoverflow.com/a/56946311/11382675
回到这段代码。
FocusScope
是一个小部件,它会自动为您在树的某个位置创建。它只将焦点遍历到树中它下面的小部件。如果没有这个小部件,在模态对话框中,您可以将焦点移到它后面的屏幕上。
FocusScope.of(context)
获取当前小部件在树中的位置(这就是 context
的位置)并沿着树向上走以找到最近的 FocusScope
小部件。
然后,找到的 requestFocus
小部件上的 FocusScope
方法使焦点移动到您传递的对象上。
由于您不想专注于任何事情(使键盘消失),因此您传递了一个新创建的 FocusNode
对象,该对象与任何小部件都没有关联。它是一次性的,之后会被销毁。
FocusNode
对象用于在输入控件上设置焦点。如果您创建一个并在您的 State
中保留对它的引用,您可以将其作为 TextFormField
传递给 focusNode: _myFocusNode
小部件,然后将其用作句柄以将焦点设置在该输入上。< /p>