Flutter TextFormField不会使上一个失去焦点

黑鲨

祝大家有美好的一天。我对flutter textformfield有问题。当我传递到下一个textformfield时,它不会使上一个失去焦点。当点击下一个字段时也会发生。我在真正的手机(G3和Mi 9t)上尝试了我的应用,并且两者都发生了。我在网上找不到解决方案。我在下面添加图片。图像显示问题更加清晰。感谢帮助。

在此处输入图片说明

表格代码:

Form(
  key: _formKey,
  child: Column(
    children: <Widget>[
      SizedBox(
        height: 20.0,
      ),
      TextFormField(
        decoration: InputDecoration(labelText: 'Email'),
        textInputAction: TextInputAction.next,
        focusNode: _emailFocus,
        onFieldSubmitted: (term) {
          _emailFocus.unfocus();

          _fieldFocusChange(
              context, _emailFocus, _passwordFocus);
        },
        validator: (value) =>
        value.isEmpty ? 'Enter an email' : null,
        onChanged: (value) {
          setState(() => email = value);
        },
      ),
      SizedBox(
        height: 20.0,
      ),
      TextFormField(
        decoration: InputDecoration(labelText: 'Password'),
        textInputAction: TextInputAction.done,
        validator: (value) => value.length < 6
            ? 'Enter an password 6+ chars long'
            : null,
        obscureText: true,
        focusNode: _passwordFocus,
        onFieldSubmitted: (term) async {
          _passwordFocus.unfocus();

          if (_formKey.currentState.validate()) {
            setState(() => loading = true);
            dynamic result = await _authService
                .registration(email, password);
            if (result == null) {
              setState(() {
                error = "please supply a valid email";
                loading = false;
              });
            }
          }
        },
        onChanged: (value) {
          setState(() => password = value);
        },
      ),
      SizedBox(
        height: 20.0,
      ),
      RaisedButton(
        color: Theme.of(context).primaryColor,
        child: Text('Register'),
        onPressed: () async {
          if (_formKey.currentState.validate()) {
            setState(() => loading = true);
            dynamic result = await _authService
                .registration(email, password);
            if (result == null) {
              setState(() {
                error = "please supply a valid email";
                loading = false;
              });
            }
          }
        },
      ),
      SizedBox(height: 12.0),
      Text(error,
          style:
          TextStyle(color: Colors.red, fontSize: 14.0)),
    ],
  )
),
若昂·苏亚雷斯

您不想聚焦当前的领域,而是想要聚焦下一个领域。在您提交的文件中,您需要致电requestFocus()nextFocus()文档)将焦点移至以下字段,在您的情况下,我将在密码字段中进行以下操作:

TextFormField(
  decoration: InputDecoration(labelText: 'Email'),
  textInputAction: TextInputAction.next,
  focusNode: _emailFocus,
  onFieldSubmitted: (term) {
    _passwordFocus.requestFocus();

    _fieldFocusChange(
        context, _emailFocus, _passwordFocus);
  },
  validator: (value) =>
  value.isEmpty ? 'Enter an email' : null,
  onChanged: (value) {
    setState(() => email = value);
  },
),

我还建议您将Button上的代码移至某个方法,以便您可以在Button上重新使用它,然后在Password字段中提交:

void submitForm(){
  if (_formKey.currentState.validate()) {
    setState(() => loading = true);
    dynamic result = await _authService
        .registration(email, password);
    if (result == null) {
      setState(() {
        error = "please supply a valid email";
        loading = false;
      });
    }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Flutter TextFormField被键盘隐藏

如何在flutter中将焦点转移到下一个文本字段?

在Flutter中将焦点从一个文本字段更改为下一个文本字段

Flutter变量失去价值

Flutter TextFormField onChanged事件

如何在Flutter中使用PageView使上一个和下一个项目可见?

Flutter TextFormField不会在重建时更新值

当上一个索引时,Flutter Swiper禁用滑动

Flutter Stack不会使孩子重叠

Flutter提供者导航到另一个屏幕时失去了价值

Flutter搜索委托,在“文本输入”中设置一个值或加载上一个搜索到的值

Flutter-如何在焦点上的TextFormField中添加阴影

Flutter如何使Wrap小部件中的Text小部件从上一个小部件的末尾开始而不是在前一个小部件的下面开始?

如何将值从SearchBar传递到Flutter中的上一个屏幕

Flutter小部件不返回值并关注下一个/上一个元素

在Flutter中制作一个TextFormField全局小部件

Flutter:键盘隐藏的TextFormField

Flutter 中的 TextFormField 验证

Flutter Pageview - onTap 滚动到下一个或上一个项目

2 Futures 一个 Stream Flutter

Flutter:如何将焦点转移到下一个 TextFormField?

一个 RenderFlex 溢出 Flutter

Flutter 重建一个 TweenAnimationBuilder

强制大写 TextFormField Flutter

如何在没有 Flutter 上一个屏幕的应用栏的情况下推送到 Flutter 中的新屏幕?

创建一个带有两个圆角和两个直切角的 Flutter TextFormField

在 textformfield 输入中添加一个特殊字符 [Flutter]

Flutter:我怎样才能有一个多行 TextFormField,当我按下回车键时不会换行,而是执行一个函数?

如何将变量的值返回到 Flutter 中的上一个类?