android - 未检测到键盘。 MediaQuery.of(context).viewInsets.bottom 始终返回 0.0

标签 android flutter dart flutter-layout

我有一个支架,里面有一个 TextField。当键盘之前将该字段移动到键盘上方时,键盘始终会覆盖该字段。我项目中的所有页面都发生这种情况。

我已将 MediaQuery.of(context).viewInsets.bottom 添加到我的构建方法中,它始终返回 0.0。当键盘出现时,没有重建。我尝试将 resizeToAvoidBottomInset 设置为 true 和 false,没有任何更改。我尝试将其包装在可滚动小部件中,没有任何变化。

在 IOS 中一切正常,这只影响 Android 构建。

Doctor summary (to see all details, run flutter doctor -v):  
[✓] Flutter (Channel unknown, v1.10.15, on Mac OS X 10.15.1 19B88, locale en-US)  

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)  
[✓] Xcode - develop for iOS and macOS (Xcode 11.2.1)  
[✓] Android Studio  
[✓] Android Studio (version 3.5)  
[✓] VS Code (version 1.40.2)  
[✓] Connected device (1 available)

最佳答案

我最近遇到了这个问题。您是否将全屏设置为true?如果启用全屏,MediaQuery.viewInsets.bottom 将返回 0.0。由于您提到该问题仅发生在 android 中,因此您可能在 native android 文件中设置了全屏属性。检查styles.xml

    <item name="android:windowFullscreen">false</item>

从应用程序中删除全屏的其他方法是 flutter 页面中的 SystemChrome.setEnabledSystemUIOverlays([])

您可能需要检查的另一件事是 Scaffold 中的 resizeToAvoidBottomPadding: 为 false。

该问题也在 Flutter issues 中提出:https://github.com/flutter/flutter/issues/25050

关于android - 未检测到键盘。 MediaQuery.of(context).viewInsets.bottom 始终返回 0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59197602/

相关文章:

java - 从另一个类更改变量值

java - 将 DateTimeOffset 从 Android 发送到 .NET Web API

flutter - 呈现和关闭模态小部件流程的正确方法是什么?

flutter - 如何将列表/映射初始化为默认参数?

android - Flutter ListView 项目根据来自 TextField 的添加数量进行更改

android-studio - Android Studio Flutter项目报错: Out of Memory

android - Renderscript:创建结构向量

dart - Flutter 页面 View 不显示两张幻灯片

dart - 如何使用其他类中的变量

android - arraylist返回错误的索引android