展开文本字段(如果有可用空间),如果没有滚动则设置minHeight。

时间:2019-05-03 11:47:52

标签: flutter flutter-layout

我有一个列,它包含一个脚手架,而列的子对象之一是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属性有所帮助,但并没有解决我的问题...

0 个答案:

没有答案