获得LayoutBuilder的高度

问题描述 投票:0回答:1

我的行包含一个Expand(LayoutBuilder(可通过用户更改垂直大小的小部件)))和右侧的Column,如代码所示。我希望列的高度等于左小部件的高度(垂直长度)。列的高度也应该能够根据左侧窗口小部件的高度进行更改。

Scaffold(
      backgroundColor: Colors.blue,
      body: Center(
        child: Row(children: <Widget>[
          Expanded(
            child: Container(
              color: Colors.grey,
              child: LayoutBuilder(builder: (context, size) {
                return TextField(
                  maxLines: null,
                );
              }),
            ),
          ),
          Container(
            color: Colors.red,
            child: Column(
              children: <Widget>[
                InkWell(
                  child: Icon(Icons.keyboard_arrow_up),
                  onTap: () {},
                ),
                InkWell(
                  child: Icon(Icons.keyboard_arrow_down),
                  onTap: () {},
                ),
              ],
            ),
          )
        ]),
      ),
    );

外观与此相似。我的第一个解决方案是以某种方式获得LayoutBuilder的高度并将其用于列的容器。使它具有与描述相同的外观和行为的任何其他更好的方法都可以。

layout goal

flutter flutter-layout
1个回答
0
投票
@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("")), body: Container( child: LayoutBuilder(builder: (context, size) { return Row( crossAxisAlignment: CrossAxisAlignment.stretch, children: <Widget>[ Flexible( child: Container( color: Colors.grey, child: TextField( maxLines: null, ), ), ), Container( color: Colors.red, child: Column( children: <Widget>[ InkWell( child: Icon(Icons.keyboard_arrow_up), onTap: () {}, ), InkWell( child: Icon(Icons.keyboard_arrow_down), onTap: () {}, ), ], ), ) ], ); }), ), ); }

Edit:这会使Row的高度成为其父级的高度。 

[如果您希望Row的高度为最小高度,在这种情况下,您可以将Row换成IntrinsicHeight,请注意,使用IntrinsicHeight可能会很昂贵,因此请不要如果您可以重组窗口小部件以避免使用它,则每次都使用它。

© www.soinside.com 2019 - 2024. All rights reserved.