Dan*_*anG 9 android dart flutter flutter-layout
我有一个脚手架,里面有一个 TextField。当键盘之前将字段移动到键盘上方时,它总是覆盖这个字段。这发生在我项目的所有页面上。
我已将 MediaQuery.of(context).viewInsets.bottom 添加到我的构建方法中,它始终返回 0.0。当键盘出现时,没有重建。我已经尝试将 resizeToAvoidBottomInset 设置为 true 和 false 而没有任何更改。我试过将它包装在一个 Scrollable 小部件中,没有改变。
在 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)
Run Code Online (Sandbox Code Playgroud)
小智 9
我找到了这个问题的原因,但不知道为什么。当控件在Scaffold中时,键盘的出现和消失不会在Scaffold中重建body。可以尝试用Material替换Scaffold来观察。如果您不想替换 Scaffold,我可以找到的一种方法是:
\nfinal bottom= EdgeInsets.fromWindowPadding(\n WidgetsBinding.instance.window.viewInsets,\n WidgetsBinding.instance.window.devicePixelRatio).bottom;\nRun Code Online (Sandbox Code Playgroud)\n
我最近遇到了这个问题。你有全屏设置为true吗?如果启用全屏,MediaQuery.viewInsets.bottom 将返回 0.0。由于您提到该问题仅发生在 android 中,因此您可以在本机 android 文件中设置 fullscreen 属性。检查styles.xml
<item name="android:windowFullscreen">false</item>
Run Code Online (Sandbox Code Playgroud)
从应用程序中删除全屏的其他方法是SystemChrome.setEnabledSystemUIOverlays([])在颤振页面中。
您可能还想检查的另一件事是resizeToAvoidBottomPadding:在 Scaffold 中设置为 false。
该问题也已在 Flutter 问题中提出:https : //github.com/flutter/flutter/issues/25050
| 归档时间: |
|
| 查看次数: |
3768 次 |
| 最近记录: |