Flutter Overlay 和 TextFields

Joh*_*ter 4 flutter

我正在使用颤振。在我使用的脚手架主体中

Overlay.of(context).insert(...) 
Run Code Online (Sandbox Code Playgroud)

插入登录对话框。

但是,当我尝试选择用户名/密码字段时,没有显示键盘。

当我在“普通”树中使用登录小部件时,它可以工作。将其移动到覆盖层中会使键盘不显示。

我在这里错过了什么吗?这不应该有效吗?

小智 5

您需要将小部件包装在 FocusScope 中,如下所示:

      overlayEntry = OverlayEntry(builder: (context) {
        FocusScope.of(context).setFirstFocus(focusScopeNode);
        return Material(
          child: FocusScope(
            node: focusScopeNode,
            child: Padding(
              padding: const EdgeInsets.all(20.0),
              child: Column(
                children: <Widget>[
                  TextField(),
                ],
              ),
            ),
          ),
        );
      });
      Overlay.of(context).insert(overlayEntry);
Run Code Online (Sandbox Code Playgroud)

事实上,对于登录页面,我只需使用导航器将其推入即可。