找到了实现它的方法.
显示下一个图标而不是完成-将textInputAction
参数设置为TextInputAction.next
使用onFieldSubmitted
回调请求下一个字段的焦点 node .
class FormWidget extends StatelessWidget{
final focus = FocusNode();
@override
Widget build(BuildContext context) {
return Form(
child: SingleChildScrollView(
padding: EdgeInsets.symmetric(horizontal: 16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
TextFormField(
textInputAction: TextInputAction.next,
autofocus: true,
decoration: InputDecoration(labelText: "Input 1"),
onFieldSubmitted: (v){
FocusScope.of(context).requestFocus(focus);
},
),
TextFormField(
focusNode: focus,
decoration: InputDecoration(labelText: "Input 2"),
),
],
),
),
);
}
}
编辑:正如文档(fltter.io/docs/cookbook/forms/Focus)中所述,我们还需要管理FocusNode生命周期.因此,在init()方法中使用init FocusNode,并在父Widget的Dispose()中使用Dispose.--@AntonDerevyanko
更新:没有FocusNode
和FocusScopeNode
也可以做到这一点,只需拨打FocusScope.of(context).nextFocus()
,看看CopsOnRoad solution是如何做到这一点的.有关更多信息,请查看doc.