我想使TextField
的高度与容器的高度相同。请检查以下代码,让我知道如何使我的容器的TextField
match_parent。我已经检查了这个问题The equivalent of wrap_content and match_parent in flutter?,但是没有找到任何解决方案。我需要使TextField
占据容器的全部高度和宽度。
new Container(
height: 200.0,
decoration: new BoxDecoration(
border: new Border.all(color: Colors.black)
),
child: new SizedBox.expand(
child: new TextField(
maxLines: 2,
style: new TextStyle(
fontSize: 16.0,
// height: 2.0,
color: Colors.black
),
decoration: const InputDecoration(
hintText: "There is no data",
contentPadding: const EdgeInsets.symmetric(vertical: 40.0),
)
),
),
)
请检查以下屏幕截图,我需要我的TextField
占据Container
的整个高度
答案 0 :(得分:2)
目前实现TextField
填充可用垂直空间的唯一方法是:
TextField(maxLines: 1000000) //maxlines: any large int
虽然使用 TextField(maxLines: null)
很诱人,但它只会将 TextField
设置为随其内容扩展,直到达到其容器限制。
我认为需要有一个 bool stretchVertically
参数。 TextField(stretchVertically: true)
表示 TextField
将尝试尽可能多地填充垂直空间。 stretchVertically
和 maxLines
必须是互斥的。
答案 1 :(得分:1)
让我们删除代码中的几行,并了解flutter的工作原理。
200
。 Container
无法根据其子项(在本例中为SizedBox.expand)调整高度Container
会导致SizedBox.expand
占据整个屏幕 SizedBox
?让我们删除它,同时查看会发生什么。Container
包装了TextField
。但是上方和下方都有一些空间。显示以上图片的最终代码版本
new Container(
// height: 200.0,
decoration: new BoxDecoration(
border: new Border.all(color: Colors.black)
),
child: new TextField(
maxLines: 2,
style: new TextStyle(
fontSize: 16.0,
// height: 2.0,
color: Colors.black
),
decoration: const InputDecoration(
hintText: "There is no data",
// contentPadding: const EdgeInsets.symmetric(vertical: 40.0),
)
),
)
答案 2 :(得分:0)
这是我的解决方法:
Container(
height: 200,
color: Color(0xffeeeeee),
padding: EdgeInsets.all(10.0),
child: new ConstrainedBox(
constraints: BoxConstraints(
maxHeight: 200.0,
),
child: new Scrollbar(
child: new SingleChildScrollView(
scrollDirection: Axis.vertical,
reverse: true,
child: SizedBox(
height: 190.0,
child: new TextField(
maxLines: 100,
decoration: new InputDecoration(
border: InputBorder.none,
hintText: 'Add your text here',
),
),
),
),
),
),
),
对我来说效果很好。这是一个屏幕截图。
答案 3 :(得分:0)
在 2021 年回答这个问题。现在有一个 expands
属性可用。此代码有效:
Column(
children: [
Expanded(
child: TextField(
maxLines: null,
minLines: null,
expands: true,
),
flex: 1),
],
)