我有CustomPaint
一个 1:1 的正方形,我需要把它放在一个Row
. 可用的水平和垂直空间可能会有所不同,因此我需要正方形的长度和宽度都是最小的最大约束。
我怎样才能实现这种行为?
我试过用LayoutBuilder
这个:
Row(
children: [
...,
LayoutBuilder(
builder: (context, constraints) {
final size = min(constraints.maxWidth, constraints.maxHeight);
return SizedBox(
width: size,
height: Size,
child: CustomPaint(...),
),
},
),
]
),
但是,这不起作用,因为Row
提供了无限的水平约束 ( maxWidth == double.infinity
)。FittedBox
由于同样的原因,使用小部件也会失败。
将 包装LayoutBuilder
在一个Expanded
小部件中为其提供了一个有界的最大宽度,但我需要在它旁边有另一个小部件Row
,所以这是不合适的。在这种情况下的Flexible
行为也一样。Expanded