Flutter 如何倾听颤振中的焦点变化?
在Android中,我们可以调用Flutter 如何倾听颤振中的焦点变化?,flutter,dart,focus,Flutter,Dart,Focus,在Android中,我们可以调用setOnFocusChangeListener() 我读过关于focus的Flatter api, 但是我找不到一个方法来实现我的要求,谁能帮我一把?我想你是在找课吧。使用addListener方法添加侦听焦点更改的侦听器函数。使用FocusNode 这是一个完全正确的答案addListener应该在initState()中,而不是build(),因为这会导致在每次构建小部件时添加一个侦听器,而您很可能不希望这样 导入“包装:颤振/材料.省道”; 类SomeWi
setOnFocusChangeListener()
我读过关于focus的Flatter api,
但是我找不到一个方法来实现我的要求,谁能帮我一把?我想你是在找课吧。使用addListener
方法添加侦听焦点更改的侦听器函数。使用FocusNode
这是一个完全正确的答案addListener
应该在initState()
中,而不是build()
,因为这会导致在每次构建小部件时添加一个侦听器,而您很可能不希望这样
导入“包装:颤振/材料.省道”;
类SomeWidget扩展StatefulWidget{
@凌驾
_SomeWidgetState createState();
}
类_SomeWidgetState扩展了状态{
最终的_focusNode=focusNode();
@凌驾
void initState(){
super.initState();
_focusNode.addListener(){
打印(“Has focus:${u focusNode.hasFocus}”);
});
}
@凌驾
小部件构建(构建上下文){
返回文本字段(focusNode:_focusNode);
}
@凌驾
无效处置(){
_focusNode.dispose();
super.dispose();
}
}
使用flatter\u挂钩
package
如果您碰巧正在使用该软件包,那么有一个专用的useFocusNode
hook
导入“包装:颤振/材料.省道”;
进口“包装:颤振钩/颤振钩.省道”;
类SomeWidget扩展HookWidget{
@凌驾
小部件构建(构建上下文){
final focusNode=useFocusNode();
使用效果(){
focusNode.addListener(){
打印(“Has focus:${focusNode.hasFocus}”);
});
return;//如果缺少返回lint,则需要此返回
},[focusNode]);
返回文本字段(focusNode:focusNode);
}
}
此外,您还可以使用小部件
焦点(
子项:TextFormField(…),
onFocusChange:(hasFocus){
如果(hasFocus){
//做事
}
},
)
我同意-很难从文档中理解意图。以身作则也很好。发布了一条谚语“你可以使用MouseRegion()事件,比如oneter,onExit”,你能提供一个例子吗?请举例说明pleaseThanks@Albert221,我曾经遇到过接收多个调用的问题,现在我设法解决了。注:节点焦点侦听器被调用两次:当它获得焦点时和当它失去焦点时。在回调节点内部。hasFocus
将分别为true
或false
比必须设置和维护FocusNode
实例要干净得多。这篇文章有一个恰当的例子。这似乎是现在可以接受的答案。很好,谢谢。如果你回击,这不会开火。这家伙是格雷蒂。这句话应该标记为答案。工作轻松迅速。