如何使TextField占用所有可用的垂直空间?

时间:2019-04-04 11:12:46

标签: flutter

TextField具有maxLines属性,该属性定义“绘制”了多少行。但是,当我不知道该属性的值时该怎么办。屏幕不同,我只想将TextField垂直扩展到最大。

Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          mainAxisAlignment: MainAxisAlignment.start,
          children: <Widget>[
            Expanded(
              child: TextField(
                keyboardType: TextInputType.multiline,
                maxLength: null,
                maxLines: 100,
                decoration: InputDecoration(border: OutlineInputBorder()),
              ),
            ),
            Text("My awesome app"),
)

enter image description here

所以在这里,我只是将maxLines的值设置得足够大,以表明它变得如此之大以至于覆盖了基础的Text小部件。如果值较小,则TextField也较小,并且不会占用整个可用空间。我该如何实现?

我看到TextField最近完成了许多工作,尚未发布:https://github.com/flutter/flutter/pull/27205。发行后,我想要实现的目标可能会变得更容易。但是,我现在该怎么办?还是在已经释放的抖动中缺少任何简单的东西?

3 个答案:

答案 0 :(得分:0)

如问题中所述,this PR合并后最近变得更加容易。您应该能够使用1.3.12版或更高版本来进行此更改。有关如何将Flutter设置为更高频道的信息,请参见channels docs

如果您可以使用v。> 1.3.12,请执行以下操作以获取一个文本字段,该文本字段占用所有可用的垂直空间:

TextField(
  maxLines: null,
  expands: true,
)

答案 1 :(得分:-1)

Lines的值设置为0,可以在需要时动态增加添加的行数。缺点是TextField的高度为1行,并随着行的增加而增加。

答案 2 :(得分:-1)

根据Documentation,将maxLines的{​​{1}}属性设置为textField,以使textField根据其内容设置其高度。