颤振:背景调整大小和表单输入问题

问题描述 投票:1回答:1

目前我正在尝试在带有圆边的容器顶部创建一个用户输入表单,占用整个屏幕。在那之后,有一个脚手架。

如果单击文本框,则会调整整个容器的大小。我尝试使用“resizeToAvoidBottomPadding”选项修复它,但如果文本框太远而且被键盘覆盖,那将不是一件好事。

这是它的样子:resized container with automatic resizing

我找到了解决问题的“解决方法”,但我很确定它不是应该解决的问题。我尝试这样做的方法是将脚手架放入脚手架中,如下所示:

Scaffold(
  resizeToAvoidBottomPadding: false,
  body: SafeArea(
    child: Stack(
      children: <Widget>[
        Container(
          height: MediaQuery.of(context).size.height,
          margin: EdgeInsets.symmetric(horizontal: 10.0, vertical: 10.0),
          padding: EdgeInsets.symmetric(vertical: 30.0, horizontal: 20.0),
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(30.0),
            color: Colors.green,
          ),
        ),
        Scaffold(
          backgroundColor: Colors.transparent,
          body: ListView(
            children: <Widget>[
              TextField(),
            ],
          ),
        ),
      ],
    ),
  ),
);

最终看起来像那样:my workaround

我的两个问题是:

  • 有没有“正确”的方法呢?
  • 如果没有,那是一种“合理”的解决方法吗?

感谢您的帮助和问候,

卢卡斯

flutter
1个回答
0
投票

当我有太多输入字段时,我经常遇到这个问题。这是一个已知的错误,正在进行中(我们希望如此),但我发现最好的解决方法是使用基于mediaQuery的底部填充的容器。视图仍然不会关注所选输入,但至少用户可以滚动并查看它。

MediaQueryData mediaQuery = MediaQuery.of(context);

Container(
  padding: EdgeInsets.only(
  bottom: mediaQuery.viewInsets.bottom,
  ),
),
© www.soinside.com 2019 - 2024. All rights reserved.