【问题标题】:TextInputAction.next Makes the Keyboard DissapearTextInputAction.next 使键盘消失
【发布时间】:2020-10-21 21:13:07
【问题描述】:

我在我的 Flutter 应用中使用 TextFormField,就像在这个 sn-p 中一样:

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Column(
      children: <Widget>[
        TextField(
          decoration: InputDecoration(hintText: "TextField A"),
          textInputAction: TextInputAction.next,
          onSubmitted: (_) => FocusScope.of(context).nextFocus(), // move focus to next
        ),
        TextField(
          decoration: InputDecoration(hintText: "TextField B"),
          textInputAction: TextInputAction.next,
          onSubmitted: (_) => FocusScope.of(context).nextFocus(), // move focus to next
        ),
        TextField(
          decoration: InputDecoration(hintText: "TextField C"),
          textInputAction: TextInputAction.done,
          onSubmitted: (_) => FocusScope.of(context).unfocus(), // submit and hide keyboard
        ),
      ],
    ),
  );
}

我的问题是每当下一个字段在键盘后面时,键盘就会消失而不是移动到下一个焦点...

这是问题的视频:

https://www.youtube.com/watch?v=h-Cv2UpnHrY&feature=youtu.be

如您所见,我想要的行为是将焦点从电子邮件字段移动到地址字段,但键盘消失了,没有任何反应。

我该如何解决?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    我认为你必须首先创建一个新对象..我使用另一个示例只是为了演示:

     final FocusNode _emailFocusNode = FocusNode();
     final FocusNode _passwordFocusNode = FocusNode();
    
    TextField(
            decoration: InputDecoration(
                labelText: 'Email',
                hintText: 'test@test.com',
                errorText: emailErrorText),
            textInputAction: TextInputAction.next,
            keyboardType: TextInputType.emailAddress,
            controller: _emailController,
            focusNode: _emailFocusNode,
            onEditingComplete: _newFocusNode
    
    TextField(
            decoration: InputDecoration(
              labelText: 'Password',
              errorText: passwordErrorText,
            ),
            obscureText: true,
            textInputAction: TextInputAction.done,
            controller: _passwordController,
            focusNode: _passwordFocusNode,
    }
    
     void _newFocusNode() {
     final newFocus=_emailFocusNode?_passwordFocusNode:_emailFocusNode;
    FocusScope.of(context).requestFocus(newFocus);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 2018-05-30
      • 2011-03-05
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多