Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何倾听颤振中的焦点变化?_Flutter_Dart_Focus - Fatal编程技术网

Flutter 如何倾听颤振中的焦点变化?

Flutter 如何倾听颤振中的焦点变化?,flutter,dart,focus,Flutter,Dart,Focus,在Android中,我们可以调用setOnFocusChangeListener() 我读过关于focus的Flatter api, 但是我找不到一个方法来实现我的要求,谁能帮我一把?我想你是在找课吧。使用addListener方法添加侦听焦点更改的侦听器函数。使用FocusNode 这是一个完全正确的答案addListener应该在initState()中,而不是build(),因为这会导致在每次构建小部件时添加一个侦听器,而您很可能不希望这样 导入“包装:颤振/材料.省道”; 类SomeWi

在Android中,我们可以调用
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
实例要干净得多。这篇文章有一个恰当的例子。这似乎是现在可以接受的答案。很好,谢谢。如果你回击,这不会开火。这家伙是格雷蒂。这句话应该标记为答案。工作轻松迅速。