我需要使用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
属性一起使用,但是最终,当键盘出现时,小部件不会消失。旁注:支架将
resizeToAvoidBottomInset
和resizeToAvoidBottomPadding
都设置为true
(默认值) 最佳答案
SingleChildScrollView
的问题在于它是 child 的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'),
)
])),
)