这是我的树:
Scaffold(-> Column(-> Expanded(-> ListView(-> Column(-> TextFields)))));
我想限制这些TextFields的宽度(例如,200 my ),但是使用SizedBox /ConstrainedBox并在列上设置宽度/maxWidth是行不通的;我必须用一个SizedBox包装每个单独的TextField才能工作--这给我的代码添加了很多杂乱无章的东西。
有更好的方法吗?
发布于 2020-06-01 00:51:56
我在看https://www.youtube.com/watch?v=XcnP3_mO_Ms的时候找到了答案。
“如果你把AspectRatio放在类似扩展的东西里,那么它的父母就会强迫你去扩展。像展开那样的紧密安装的小部件不会给他们的孩子选择--苛刻--如果这种情况发生在你身上,就在扩展和AspectRatio之间放置一些类似的对齐。
联立将被迫扩大,以填补该地区,但它将让它的孩子采取自己的比例。谢谢,排成一排!“
我必须将我的Column
包装在Container
中,然后将Container
包装在Align
中,以摆脱Expanded
。
发布于 2020-06-01 00:20:11
如果使用容器包装列并将其设置为200 to,则不再需要单独指定/包装TextFields。
此外,查看您的层次结构,您的扩展小部件将决定最大值。宽度。
Scaffold(-> Column(-> Expanded(-> ListView(-> Container(width:200 -> Column(-> TextFields))))));
body: Container(
width: 200,
color: Colors.deepOrange,
child: Column(
children: [
TextField(),
],
),
),
发布于 2020-06-01 01:06:55
问题是TextField没有定义的宽度,因此该列不知道如何处理它,而且该列需要知道其子元素的大小才能正确地呈现它们。最好的方法是将您的TextField封装在: 1.扩展的小部件(在这里,TextField将展开以填充可用空间) 2.灵活的小部件,或3。最好还是将其包装在容器中,因为您已经知道您想要的宽度(即200 it )。
https://stackoverflow.com/questions/62127815
复制相似问题