如何获取Flutter中当前关注的focusNode?

6yoyoihd  于 2023-06-07  发布在  Flutter
关注(0)|答案(3)|浏览(385)

我需要知道哪个focusNode目前专注于Flutter。
让我解释一下为什么我需要它。
我使用virtual_keyboard包,因为我有一个数字输入的问题。

child: VirtualKeyboard(
          onKeyPress: (VirtualKeyboardKey key) {
            if (key.action == VirtualKeyboardKeyAction.Backspace) {
              _priceController.text = _priceController.text
                  .substring(0, _priceController.text.length - 1);
            }
            _priceController.text += key.text ?? "";
          },
          type: VirtualKeyboardType.Numeric,
        ),

我有两个TextFormField的(价格和金额),当用户改变焦点时,onKeyPress:方法需要编辑另一个TextEditingController的文本。如果我知道哪个focusNode当前处于活动状态,也许我可以这样做。

bxgwgixi

bxgwgixi1#

使用FocusNode? _focusNode = FocusScope.of(context).focusedChild;

slhcrj9b

slhcrj9b2#

参考FocusNode
使用focusnode.hasFocus
如果节点有输入焦点,则返回true

flseospp

flseospp3#

您可以比较可聚焦小部件的FocusNode示例(例如TextField)与FocusManager.instance.primaryFocus
对我来说,这比focusNode.hasFocus可靠得多。

// initalize focusNode
FocusNode focusNode = FocusNode();

    
...
 
// add focusNode to TextField or any other fousable widget
child: TextField(
  focusNode: focusNode,
); 

... 

if(focusNode == FocusManager.instance.primaryFocus){
  // focusNode (TextField) is focused right now
}

相关问题