我有三个小部件,我希望顶部的小部件在最顶部,底部的小部件位于最底部。中间的小部件可以等距排列,也可以刚好在顶部小部件(最好是后者)的下方。
=================
top widget
<some space>
middle widget
<some (or more) space>
bottom widget
=================
我想我可能可以使用LayoutWidget来计算我需要多少空间,使用MainAxisAlignment。启动并在中间和底部小部件之间插入一个间隔小部件,但我希望有一种更自然的方法来做到这一点。
我试着把它们放在一个专栏里
mainAxisAlignment: MainAxisAlignment.spaceEvenly
,
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
BoardWidget(board: widget.board),
TipWidget(board: widget.board),
OnScreenKeyboard(onKeyPressed: _onKeyPress),
],
),
但这增加了顶部和底部以及小部件之间的空间。
基于
flutter - how to align at the top and at the bottom (this is the issue) - and column middle part
,我尝试添加一个扩展,如下所示:
body: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
BoardWidget(board: widget.board),
TipWidget(board: widget.board),
Expanded(
child: Align(
alignment: Alignment.bottomCenter,
child: OnScreenKeyboard(onKeyPressed: _onKeyPress)),
),
],
),
但这似乎没有任何影响(我不确定我是否完全理解这个简短的答案,tbh)。
使现代化
:
感谢下面的回答,我的结局是这样的。可能仍然会按照建议进行调整,但它正是我想要做的:
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
BoardWidget(board: widget.board),
TipWidget(board: widget.board),
const Spacer(),
OnScreenKeyboard(onKeyPressed: _onKeyPress),
],
),