【发布时间】:2021-04-02 16:10:02
【问题描述】:
我有一个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。
【问题讨论】:
标签: flutter flutter-layout flutter-row