将焦点更改为 flutter 中的下一个文本字段
Change focus to next textfield in flutter
我有一个用于制作文本字段的代码,如下所示
...Column(
children: <Widget>[
textField(text: 'User Name'),
SizedBox(height: 20),
textField(text: 'Password'), ])...
textField 是我制作的 class,它具有以下代码来制作文本字段。我这样做是为了避免代码重复,因为我在我的应用程序中经常使用文本字段。
...TextField(
textInputAction: TextInputAction.next,
obscureText: text == 'Password' ? true : false,
textCapitalization: TextCapitalization.words,
cursorColor: primaryColor,
textAlign: TextAlign.center,
decoration: InputDecoration(
labelText: text,
labelStyle: TextStyle(color: primaryColor, fontFamily: 'Bellotta'),
filled: true,
fillColor: Colors.white,
border: OutlineInputBorder(...
因为我使用这个函数来创建文本字段,所以我不能使用 focusNode 来改变焦点。
我该如何解决这个问题??
您可以指定另外两个参数,一个用于当前文本字段的 focusNode
,另一个用于您想要更改的焦点,例如
textField(
text: 'User Name',
focusNode: // your focus node,
nextFocusNode: // your next field focus node
),
现在你可以使用了:
FocusScope.of(context).requestFocus(nextFocus);
提示:如果您想减少代码重复,那么您应该将 InputDecoration
存储在 var/ 方法中,而不是创建文本字段方法。
我有一个用于制作文本字段的代码,如下所示
...Column(
children: <Widget>[
textField(text: 'User Name'),
SizedBox(height: 20),
textField(text: 'Password'), ])...
textField 是我制作的 class,它具有以下代码来制作文本字段。我这样做是为了避免代码重复,因为我在我的应用程序中经常使用文本字段。
...TextField(
textInputAction: TextInputAction.next,
obscureText: text == 'Password' ? true : false,
textCapitalization: TextCapitalization.words,
cursorColor: primaryColor,
textAlign: TextAlign.center,
decoration: InputDecoration(
labelText: text,
labelStyle: TextStyle(color: primaryColor, fontFamily: 'Bellotta'),
filled: true,
fillColor: Colors.white,
border: OutlineInputBorder(...
因为我使用这个函数来创建文本字段,所以我不能使用 focusNode 来改变焦点。 我该如何解决这个问题??
您可以指定另外两个参数,一个用于当前文本字段的 focusNode
,另一个用于您想要更改的焦点,例如
textField(
text: 'User Name',
focusNode: // your focus node,
nextFocusNode: // your next field focus node
),
现在你可以使用了:
FocusScope.of(context).requestFocus(nextFocus);
提示:如果您想减少代码重复,那么您应该将 InputDecoration
存储在 var/ 方法中,而不是创建文本字段方法。