Flutter TextFormFields未获得焦点-抖动

Flutter TextFormFields未获得焦点-抖动,flutter,dart,Flutter,Dart,目前我正在登录屏幕上工作。 下面是我的屏幕必须如何工作 用户有2个登录/注册选项。使用电子邮件或手机号码。 用户可以从屏幕上给出的选项中选择登录/注册的方式。 所有my TextFormFields都将按照用户的选择显示,但它们不会同时显示。 因此,我在这里面临的困难是,我的TextFormFields没有按照用户选择来聚焦。默认焦点必须在手机号码字段上,该字段工作正常,但当用户选择“电子邮件”选项时,焦点不会出现在电子邮件上,这就是为什么键盘也不会显示。passport文本框也会出现这种情况,

目前我正在登录屏幕上工作。 下面是我的屏幕必须如何工作

用户有2个登录/注册选项。使用电子邮件或手机号码。 用户可以从屏幕上给出的选项中选择登录/注册的方式。 所有my TextFormFields都将按照用户的选择显示,但它们不会同时显示。 因此,我在这里面临的困难是,我的TextFormFields没有按照用户选择来聚焦。默认焦点必须在手机号码字段上,该字段工作正常,但当用户选择“电子邮件”选项时,焦点不会出现在电子邮件上,这就是为什么键盘也不会显示。passport文本框也会出现这种情况,一旦用户输入电子邮件地址,该文本框就必须聚焦

我已附加视频链接,以更清晰。

下面是所有3个Textformfields的代码。其他两个具有控制器和焦点节点的textfields的代码相同

   final emailInputController = TextEditingController();
      final mobileInputController = TextEditingController();
      final passwordInputController = TextEditingController();
      final emailFocusNode = FocusNode();
      final mobileFocusNode = FocusNode();
      final passwordFocusNode = FocusNode();

    TextFormField(
                                        autofocus: true,
                                        focusNode: passwordFocusNode,
                                        onFieldSubmitted: (a) {
                                          _handleSubmittedMobile(a);
                                        },
                                        keyboardType: TextInputType.text,
                                        controller: passwordInputController,
                                        style: TextStyle(
                                          fontSize: 20.0,
                                          color: Theme.of(context)
                                              .primaryColorDark,
                                          fontWeight: FontWeight.bold,
                                        ),
                                        )),
    TextFormField(
                                        autofocus: true,
                                        focusNode: mobileFocusNode,
                                        onFieldSubmitted: (a) {
                                          _handleSubmittedMobile(a);
                                        },
                                        keyboardType: TextInputType.text,
                                        controller: mobileInputController,
                                        style: TextStyle(
                                          fontSize: 20.0,
                                          color: Theme.of(context)
                                              .primaryColorDark,
                                          fontWeight: FontWeight.bold,
                                        ),
                                        )),
    TextFormField(
                                        autofocus: true,
                                        focusNode: emailFocusNode,
                                        onFieldSubmitted: (a) {
                                          _handleSubmittedMobile(a);
                                        },
                                        keyboardType: TextInputType.text,
                                        controller: emailInputController,
                                        style: TextStyle(
                                          fontSize: 20.0,
                                          color: Theme.of(context)
                                              .primaryColorDark,
                                          fontWeight: FontWeight.bold,
                                        ),
                                        )),
我怎样才能做到这一点


提前谢谢。

我在dartpad中试用了你的代码,效果很好。第一个TextFormField是自动聚焦的。你看到错误了吗?您可以复制并粘贴代码以进行检查。是第一个字段是自动聚焦的,因为它是用户的第一选择。但若用户想用电子邮件和密码登录呢?这就是为什么有一个选项可以选择使用电子邮件登录,当用户选择时,手机号码文本框将消失,电子邮件文本框将显示当此文本框显示在屏幕上时,它必须自动关闭,而这不会发生。按电子邮件登录时,应具有关注已按下的emailFocusNode的功能:=>FocusScope.ofcontext.requestFocusemailFocusNode,并使用bool类型的变量确定何时显示手机号码输入字段。如果这是你想要的,我会发布完整的代码作为答案。你好,这个链接你可以用来检查。键盘未按照用户选择显示。我认为颤振框架本身存在错误。我不确定。获取错误RenderBox未布局:RenderEditable81c2f NEEDS-LAYOUT NEEDS-PAINT,这是我在Flatter的github中发现的错误报告。一定要去看看。我想我们得等到它修好。