我需要使用SingleChildScrollView
以便能够使用keyboard_actions以便我可以在iOS的键盘顶部放置一个“完成”按钮(目前使用数字键盘)
SingleChildScrollView
将有一个小时候的列,然后一个按钮放在底部。我尝试使用LayoutBuilder
强制执行SingleChildScrollView
的高度。
LayoutBuilder(
builder: (BuildContext context, BoxConstraints viewportConstraints) {
return SingleChildScrollView(
child: ConstrainedBox(
constraints:
BoxConstraints(minHeight: viewportConstraints.maxHeight),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Column(),
// Spacer() ?
FlatButton()
])));
});
我尝试使用带有BoxConstraints
属性的maxHeight
,但最终当键盘出现时,小部件不会晃动。
旁注:Scaffold将resizeToAvoidBottomInset
和resizeToAvoidBottomPadding
设置为true
(默认值)
SingleChildScrollView
的问题在于它是shrikwrap
它的孩子。所以要介于两者之间的自动尺寸小部件 - 我们需要使用MediaQuery
来获得屏幕高度和SizedBox
扩展 - SingleChildScrollView
。
这里按钮位于屏幕底部。
工作代码:
double height = MediaQuery.of(context).size.height;
SingleChildScrollView(
child: SizedBox(
height: height,
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Column(
children: <Widget>[
Text('Dummy'),
Text('Dummy'),
Text('Dummy'),
],
),
Spacer(),
FlatButton(
onPressed: () {},
child: Text('Demo'),
)
])),
)