将小部件放置在堆栈中而不重叠

时间:2019-03-12 09:36:35

标签: flutter flutter-layout

我有一个登录屏幕,顶部带有徽标。我希望登录表单准确位于屏幕中心(而不是徽标下方空间的中心)。到目前为止,我设法使用Stack实现了这一目标,大致是这样的:

Stack(
   children: [
      Positioned(
        child: Logo(),
        left: 0,
        top: 0,
      ),
      Column(
          children: [LoginForm()],
          mainAxisAlignment: MainAxisAlignment.center,
      ),
   ],
)

总的来说,我对它的外观很满意,但是,当弹出软键盘,可见的屏幕尺寸和中心的概念发生变化时,表单会向上移动并与徽标重叠。我知道我可以完全禁止小部件的大小,但是我可以只允许表单向上移动,只要它不与徽标重叠即可吗?

1 个答案:

答案 0 :(得分:0)

您可以使用ListView而不是Column来避免与徽标重叠,并且当键盘打开时,它将自动向上滚动表单。 另请注意,一旦使用ListView,请在其中使用shrinkWrap: true,因为它只会占用所需的空间。 希望这个答案有帮助。