颤动键盘使文本域隐藏

Nir*_*age 9 mobile android ios flutter

我是新来的人.我添加了一个带有文本字段的表单,当我单击文本字段和键盘时,文本字段会上升.

这是我的代码:

Widget build(BuildContext context) {

MediaQueryData mediaQuery = MediaQuery.of(context);
return new Scaffold(
  body:  new Container(
      color: Colors.purple,
      constraints: new BoxConstraints.expand(),
      padding: EdgeInsets.only(top: 10.0,left: 10.0,right: 10.0, bottom: mediaQuery.viewInsets.bottom, ),
      child: SingleChildScrollView(
        child: Container(
            child: Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  SizedBox(height: 12.0),
                  Text(
                    'What is your Business Name?',
                    style: TextStyle(fontSize: 24.0),
                  ),
                  AppForm(),
                ],
              ),
            padding: EdgeInsets.only(left: 10.0,right: 10.0, bottom: mediaQuery.viewInsets.bottom),
            decoration: BoxDecoration(
              borderRadius: BorderRadius.all(Radius.circular(30.0)),
              color: Colors.white,
                ),
              )
          )
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)

这是不打开键盘的结果: 没有键盘的图像

这是打开键盘后的图像: 打开键盘后图片


这是我的扑动医生输出.

Doctor summary (to see all details, run flutter doctor -v): [?] Flutter 
(Channel beta, v0.5.1, on Microsoft Windows [Version 10.0.17134.165], locale 
en-US) [?] Android toolchain - develop for Android devices (Android SDK 
28.0.0) [?] Android Studio (version 3.1) [!] VS Code, 64-bit edition (version 
1.25.1) [!] Connected devices ! No devices available ! Doctor found issues in 
2 categories.
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?

Gra*_*amD 26

此答案并非针对上述问题,但可能对那些仍然遇到键盘覆盖所选文本字段问题的人有用,无论他们做什么。我在尝试解决此类问题时访问了此页面。

在出现问题之前,我一直在进行一些更改以尝试改进应用程序启动时的启动画面。根据某人的建议,我<resources><style>在 android/app/src/main/res/values 文件夹中的 style.xml 文件部分包含了以下行

<item name="android:windowFullscreen">true</item>
Run Code Online (Sandbox Code Playgroud)

这具有在显示键盘时停止在主应用程序中向上滚动的任何字段的意外效果。这对某些人来说可能很明显,但对我来说不是。

希望这些信息可以帮助某人。


小智 24

您可以简单地将您希望永远不会被键盘隐藏的小部件包装在填充内,如下所示:

Padding(
         child: YourWidget()
         padding: EdgeInsets.only(
         bottom: MediaQuery.of(context).viewInsets.bottom)); 
Run Code Online (Sandbox Code Playgroud)


Ole*_*kov 14

如果您使用ScreenUtilInit包,那么也许useInheritedMediaQuery: true在构造函数中进行设置ScreenUtilInit会对您有所帮助。它对我有帮助:)


小智 13

resizeToAvoidBottomPadding 已弃用 resizeToAvoidBottomInset: true


Jav*_*haq 11

<item name="android:windowFullscreen">true</item>
Run Code Online (Sandbox Code Playgroud)

从上面删除行

android/app/src/main/res/values/styles.xml

使我的应用程序固定为输入字段自动向上滚动以在键盘上打开

谢谢@GrahamD

在此处输入图片说明

  • 我也有这个问题。此行是由于使用 flutter_native_splash 包而添加的。别以为我会发现这一点。谢谢。 (3认同)

Tim*_*bil 11

您应该添加SingleChildScroolView到您的 Scaffold 中并添加reverse: true到您的 SingleChildScroolView 中

Scaffold(
body: SingleChildScrollView(
          reverse: true,
          child: Container()));
Run Code Online (Sandbox Code Playgroud)


Ama*_*tra 7

这就是我的情况.你肯定是将脚手架包裹在另一个脚手架内.你的颤动应用程序中应该只有一个脚手架小部件,即主要布局.简单地移除您拥有的所有祖先脚手架并且仅保留一个脚手架.不要将脚手架包裹在另一个脚手架中.尽管如此,你可以将脚手架包裹在容器内.

请确保在main.dart文件中没有这样做: -

✖✖

return Scaffold(
body : YourNewFileName(),
);
Run Code Online (Sandbox Code Playgroud)

尽管上面的代码执行此操作: - ✔✔

return YourNewFileName();
Run Code Online (Sandbox Code Playgroud)


The*_*Guy 7

只需在此剪切并粘贴您的身体代码 -

SingleChildScrollView(
        child: Stack(
          children: <Widget>[
              // your body code 
           ],
         ),
       ),
Run Code Online (Sandbox Code Playgroud)

有同样的问题在这里得到了答案


son*_*610 6

 new Scaffold(
      appBar: new AppBar(
          ...
      resizeToAvoidBottomPadding: true,
      ....
Run Code Online (Sandbox Code Playgroud)

Fixed problem textfield was hidden by keyboard


小智 5

如果您使用的Scaffold是包裹身体SingleChildScrollView

例如这样的:

...
return Scaffold(
body: SingleChildScrollView(
    child: Column(
      children: <Widget>[
        TextField(),
        TextField(),
        TextField(),
      ],
    ),
  ),
);
...
Run Code Online (Sandbox Code Playgroud)

这对我来说真的是救星。现在脚手架将变得可滚动。