颤振-卡的填充高度

时间:2020-05-13 09:30:58

标签: flutter flutter-layout

我需要用几个小部件填充卡片,其中一些小部件需要填充整个高度,而不是整个宽度。该卡包含一个Row,能够将两个小部件彼此对齐,第一个小部件需要垂直填充父级(另一个小部件是ExpansionTile,因此可以增加高度)。使Container立即显示的唯一方法是将其包装在SizedBox中,并将高度设置为特定值。当然,这不允许容器随着卡的高度而增长或缩小。

我已经尝试过使用CrossAxisAlignment.stretch进行IntrinsicHeight,Expanded,Row的操作,似乎没有什么可以让彩色框填充其父级(卡片)的高度。

主要问题是卡的高度由ExpansionTile高度设置,因此不固定。因此,如果我将Container的高度设置为double.infinity,Flutter无法构建布局,因为它将拉伸Card的高度直到infinity。


关闭ExpansionTile时需要绿色:

enter image description here

打开ExpansionTile时需要红色:

enter image description here


这是相关代码:

Card(
  child: Row(
    children: <Widget>[
      Align(
        alignment: Alignment.centerLeft,
        child: SizedBox(
          width: 10,
          height: 74,
          child: Container(
            decoration: BoxDecoration(
              color: color,
              borderRadius: new BorderRadius.all(Radius.circular(3.0)),
            ),
          ),
        ),
      ),
      Expanded(
        child: Theme(
          data: Theme.of(context).copyWith(dividerColor: Colors.transparent),
          child: ExpansionTile(
            title: Text('Title'),
            subtitle: Text('Subtitle'),
            children: <Widget>[
              Padding(
                padding: EdgeInsets.only(left: 25),
                child: ListTile(
                  title: Text('child title'),
                  subtitle: Text('child subtitle'),
                  trailing: Icon(Icons.chevron_right),
                ),
              ),
              Padding(
                padding: EdgeInsets.only(left: 25),
                child: ListTile(
                  title: Text('child title'),
                  subtitle: Text('child subtitle'),
                  trailing: Icon(Icons.chevron_right),
                ),
              ),
            ],
          ),
        ),
      ),
    ],
  ),
),

1 个答案:

答案 0 :(得分:0)

基本上,您的问题是,当您不指定容器的高度时,该容器将获得其孩子的身高,或者,如果父母强迫孩子接受他的身高,(例如{{ 1}})...

因此,最适合您的解决方案是使用sizedBox小部件包裹卡片(或行),并使用LayoutBuilder作为容器的高度。

所以代码应该是这样的:

constrains.maxHeight

我无法测试上面的代码是否正常工作,所以请告诉我它是否正常工作。