我有一个列,它包含一个脚手架,而列的子对象之一是TextField。我希望Textfield可以扩展并占用所有可用空间,但是如果没有足够的空间(基本上是在键盘显示时),我希望Textfield的高度至少为3行,并且Column可以滚动,因此焦点在Textfield上按预期工作。
我尝试了很多不同的小部件,例如Expand,IntrinsicHeight,LayoutBuilder,ConstrainedBox,SingleChildScrollView ... 但是没有一个经过测试的组合能够按预期工作...
SingleChildScrollView页面确实对我有很大帮助,但没有一个示例符合我的情况: https://docs.flutter.io/flutter/widgets/SingleChildScrollView-class.html
Scaffold(
body: Column(
children: <Widget>[
Text("Some\nvery\nvery\nvery\nvery\nvery\nvery\nvery\nvery\nvery\nvery\nvery\nlong\ntext"),
RaisedButton(child: Text("Some button")),
Text("Second line"),
Expanded(
child: Padding(
//Use the expand parameter instead of padding + maxLines, once released : https://github.com/flutter/flutter/pull/27205
padding: const EdgeInsets.only(top: 10, bottom: 30),
child: TextField(
decoration: InputDecoration(
hintText: "Message...",
),
maxLength: 500,
maxLengthEnforced: true,
maxLines: 50,
),
),
),
Center(
child: RaisedButton(
child: Text('OK'),
onPressed: _send,
),
)
],
),
)
使用该代码,第一部分工作正常:如果未显示键盘,则文本字段将按预期扩展。 但是当键盘显示出来时,布局溢出了(因为没有SingleChildScrollView)。
编辑:新的TextField.extends属性有所帮助,但并没有解决我的问题...