我有一个我的应用程序的页面,它只Card
包含一个Column
结尾的文件MaterialList
.即使我的列表只有一个或两个项目,卡片也会将其垂直空间扩展到屏幕底部,而不是停留在列表项目的末尾.该列的文件表明,这是正常的行为列("布局中的每个孩子一零或零弹性系数(例如,那些不展开)与无界垂直约束").我认为将列表包装在一个Flexible
可能达到我想要的效果但是当我尝试时我得到以下错误:
RenderFlex children have non-zero flex but incoming height constraints are unbounded. I/flutter (11469): When a column is in a parent that does not provide a finite height constraint, for example if it is I/flutter (11469): in a vertical scrollable, it will try to shrink-wrap its children along the vertical axis. Setting a I/flutter (11469): flex on a child (e.g. using a Flexible) indicates that the child is to expand to fill the remaining I/flutter (11469): space in the vertical direction. I/flutter (11469): These two directives are mutually exclusive. If a parent is to shrink-wrap its child, the child I/flutter (11469): cannot simultaneously expand to fit its parent.
我显然误解了这个布局应该如何工作.
以下是我现在作为Scaffold
此页面正文的示例代码:
new Container( // Outer container so we can set margins and padding for the cards // that will hold the rest of the view. alignment: FractionalOffset.topCenter, margin: new EdgeInsets.only(top: style.wideMargin), padding: new EdgeInsets.symmetric(horizontal: style.defaultMargin), child: new Card( child: new Column( children: [ new CustomHeader(), // <-- a Row with some buttons in it new Divider(), new MaterialList( type: MaterialListType.twoLine, children: listItems, // <-- a list of custom Rows ), ], ), ),
)
我怎么能有一张紧紧包裹Column
小部件的卡?
默认情况下,Column
展开以填充最大垂直空间.您可以通过将mainAxisSize
属性设置为更改此行为MainAxisSize.min
,这会导致Column
仅占用其子项所需的最小垂直空间量.