我的行包含一个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的高度并将其用于列的容器。使它具有与描述相同的外观和行为的任何其他更好的方法都可以。
@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
可能会很昂贵,因此请不要如果您可以重组窗口小部件以避免使用它,则每次都使用它。