当键盘在Flutter TextField中可见时,键盘顶部有大量空白空间

vbopmzt1  于 2023-05-19  发布在  Flutter
关注(0)|答案(3)|浏览(254)

这是我的代码:

build(BuildContext context) {
  return new Scaffold(
    body: new SafeArea(
    child: new ListView.builder(
        itemBuilder: (itemBuilder),
      itemCount: (1),
      padding: kMaterialListPadding,
    ),
  )
 );
}
itemBuilder(BuildContext context, int index) {
    return new TextFormField(
        decoration: new InputDecoration(
          border: const OutlineInputBorder(),
          hintText: "What's on your mind?",
          helperText: "5-500 characters",
        ),
        maxLines: 3,
    );
}

当我点击文本字段时,键盘打开,但键盘顶部出现大量空白,如图所示(文本字段的边框被剪切)。

这是因为ListView。如果我只在正文中添加文本字段,外观就没问题。

yquaqz18

yquaqz181#

之所以会浪费这么多空间,是因为一个脚手架里面有一个脚手架。每个脚手架增加了键盘的空间。删除一个解决了问题。

1rhkuytd

1rhkuytd2#

脚手架具有属性resizeToAvoidBottomPadding。将此属性设置为false

qyzbxkaa

qyzbxkaa3#

对于那些在关闭键盘后看到白色的人来说,这可能是由MediaQuery引起的,在我的例子中,我在基本脚手架周围使用MediaQuery来解决在抽屉内使用RangeSlider的问题(使用RangeSlider将显示关闭抽屉的行为,而不改变滑块的值),我使用了这个:

MediaQuery(
  data: MediaQueryData.fromWindow(window).copyWith(
      gestureSettings: const DeviceGestureSettings(touchSlop: kTouchSlop)),
  child: Scaffold(...)

但这会导致我们在关闭键盘后看到的白色,也会导致当您在窗体上打开键盘时,屏幕不再滚动。
所以我只在我使用抽屉的脚手架上添加媒体查询解决方案...
仅供参考,对于那些使用Getx的人,我使用它与底部应用程序栏,我们用途:

Scaffold(
      body: Obx(
        () => IndexedStack(
          children: controller.menuPages,
          index: controller.navMenuIndex(),
        ),
      ),

然后在主选项卡之后,使用另一个脚手架(我在这个脚手架上使用了MediaQuery)

相关问题