如何在flutter中创建一个单元格,该单元格的元素延伸到动态大小的单元格的底部?

时间:2018-01-29 18:03:54

标签: flutter

我想创建一个基本格式的单元格:

  Widget build(BuildContext context) {
    return new Container(
      decoration: new BoxDecoration(border: new Border.all(width: 2.0)),
      child: new Row(
        children: <Widget>[
          new Container(
            width: 80.0,
            child: new Column(
              children: <Widget>[
                new Container(color: Colors.red, height: 10.0),
                new Container(color: Colors.blue, height: 50.0,),
                // new Expanded(
                //   child: new Container(color: Colors.amber),
                // )
              ],
            ), 
          ),
          new Expanded(
            child: new Padding(
              padding: new EdgeInsets.all(20.0),
              child: new Text(widget.message)
            )
          )
        ],
      ),
    );
  }

我有以下代码来执行此操作:

web.config

但是我从Flutter中得到以下错误: RenderFlex子项具有非零flex,但传入高度约束是无限制的。

有没有办法在最左边的列中最后一次扩展占用尽可能多的空间,因为右侧和侧面的RichText的大小?

2 个答案:

答案 0 :(得分:1)

我猜你希望你的list元素具有尽可能小的高度,同时拥有一个占用Column剩余空间的元素。

由于IntrinsicHeight小部件

,可以实现此类行为

该小部件确保它的孩子将采用尽可能小的高度,而不是填满屏幕。

=&GT;将您的Row包裹在IntrinsicHeight窗口小部件中,它现在可以正常工作。

最终结果将是:

new Container(
  decoration: new BoxDecoration(border: new Border.all(width: 2.0)),
  child: new IntrinsicHeight(
    child: new Row(
      children: <Widget>[
        new Container(
          width: 80.0,
          child: new Column(
            children: <Widget>[
              new Container(color: Colors.red, height: 10.0),
              new Container(
                color: Colors.blue,
                height: 50.0,
              ),
              new Expanded(
                child: new Container(color: Colors.amber),
              )
            ],
          ),
        ),
        new Expanded(
          child: new Padding(
            padding: new EdgeInsets.all(20.0),
            child: new Text("hello\n\n\n\n\n\nworld"),
          ),
        )
      ],
    ),
  ),
),

答案 1 :(得分:0)

可能没有什么问题,但没有最小的工作示例,我无法确定。

这一点可以在列中:正确的一个不是必需的,您可以将RichText溢出到新行并根据需要自行扩展(如果您想要,请考虑SingleChildScrollView保持行高度固定);左边的人需要以某种方式绑定。你几乎没有选择:

  • 您可以将其包裹在Container固定高度
  • 你可以将它放在一个能够裁剪孩子的物体中,
  • 您可以要求Column严格包含mainAxisSize: MainAxisSize.min
  • 的子女

干杯