0

我有一个用于制作文本字段的代码,如下所示

 ...Column(
   children: <Widget>[
                      textField(text: 'User Name'),
                      SizedBox(height: 20),
                      textField(text: 'Password'), ])...

textField 是我创建的一个类,它具有以下代码来创建一个文本字段。我这样做是为了避免代码重复,因为我在应用程序中经常使用文本字段。

...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 来改变焦点。我该如何解决这个问题?

4

1 回答 1

1

您可以为当前文本字段指定另外两个参数focusNode,另一个用于您想要更改的焦点,例如

textField(
    text: 'User Name', 
    focusNode: // your focus node, 
    nextFocusNode: // your next field focus node
),

现在你可以使用:

FocusScope.of(context).requestFocus(nextFocus);

提示:如果你想减少代码重复,那么你应该将你存储InputDecoration在 var/ 方法中,而不是创建文本字段方法。

于 2020-03-22T19:48:08.517 回答