Android emulator:配置如何按Tab键前进到下一个TextFormField,以便更轻松地进行人机界面测试?

Android emulator:配置如何按Tab键前进到下一个TextFormField,以便更轻松地进行人机界面测试?,android,flutter,android-emulator,ios-simulator,Android,Flutter,Android Emulator,Ios Simulator,(在网络上,作为一名以键盘为中心的开发人员,我被宠坏了,因为我无法按键盘上的Tab键将表单焦点提前到下一个字段。) 在开发/测试我的第一款颤振应用程序时,我还没有弄清楚如何在Android模拟器中实现这一点。我必须手动移动鼠标以将焦点移到下一个表单字段 我的直觉是,每个人在做第一个颤振形态时都有这种挫折感,必须有一个简单的设置或简单的方法来实现它?是的,有一种简单的方法可以进入下一个领域。如果您使用的是TextFormField小部件,则它具有focusNode属性,有助于创建可使用onfild

(在网络上,作为一名以键盘为中心的开发人员,我被宠坏了,因为我无法按键盘上的Tab键将表单焦点提前到下一个字段。)

在开发/测试我的第一款颤振应用程序时,我还没有弄清楚如何在Android模拟器中实现这一点。我必须手动移动鼠标以将焦点移到下一个表单字段


我的直觉是,每个人在做第一个颤振形态时都有这种挫折感,必须有一个简单的设置或简单的方法来实现它?

是的,有一种简单的方法可以进入下一个领域。如果您使用的是
TextFormField
小部件,则它具有
focusNode
属性,有助于创建可使用
onfildsubmitted
回调配置的焦点节点。如果使用仿真器键盘切换焦点,还可以使用
textinputation
属性,当焦点从一个字段移动到另一个字段时,可以根据需要将该属性设置为
next
done
。下面是一个示例用例:

我在一列中有两个
TextFormField
小部件,分别是
hintText
First
Second
。当用户点击第一个字段时,仿真器键盘打开并显示
next
按钮。点击它会将光标焦点移动到第二个字段。下面是相同的工作代码示例:

body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                TextFormField(
                  decoration: InputDecoration(
                    hintText: 'First'
                  ),
                  textInputAction: TextInputAction.next,
                  focusNode: _firstNode,
                  onFieldSubmitted: (String val) {
                    _firstNode.unfocus();
                    FocusScope.of(context).requestFocus(_secondNode);
                  },
                ),
                TextFormField(
                  decoration: InputDecoration(
                    hintText: 'Second'
                  ),
                  focusNode: _secondNode,
                )
              ],
            )
          )
主体:中心(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
TextFormField(
装饰:输入装饰(
hintText:“第一”
),
textInputAction:textInputAction.next,
focusNode:_firstNode,
onFieldSubmitted:(字符串val){
_firstNode.unfocus();
FocusScope.of(context.requestFocus)(\u secondNode);
},
),
TextFormField(
装饰:输入装饰(
hintText:“第二”
),
focusNode:_secondNode,
)
],
)
)
textInputAction:textInputAction.next
使键盘按钮显示
next
按钮。同样,您可以为最后一个字段设置
textInputAction:textInputAction.done
\u firstNode
是我们定义为
FocusNode\u firstNode=FocusNode()的焦点节点与第二个节点相同

然后在
onfielsubmitted
中,我们通过将
\u secondNode
传递给它,从第一个字段移除焦点,并使用
FocusScope
请求聚焦到下一个字段。因此,当用户在第一个字段中输入输入并点击键盘上的
next
按钮时,焦点将切换到第二个字段

另外,如果您不想依靠键盘上的“下一步”按钮来切换焦点,可以使用与上述逻辑类似的
onChanged
回调。唯一的区别是,此回调不适用于
TextFormField
小部件,您必须使用
TextField
小部件

希望这能回答你的问题