【发布时间】:2021-03-22 12:15:54
【问题描述】:
我需要在颤振中实现这一点:
我尝试制作Row 并为Text 设置背景来处理直角,然后使用ClipPath 来制作三角形。这样做的问题是边缘不精确(您可以在下图中看到矩形和三角形之间的细线),ClipPath 也有固定大小,所以如果我想在某个时候更改文本大小我将不得不再次微调三角形。
这是我的代码:
class TriangleClipper extends CustomClipper<Path> {
@override
Path getClip(Size size) {
final path = Path();
path.lineTo(0.0, size.height);
path.lineTo(size.width / 3, size.height);
path.close();
return path;
}
@override
bool shouldReclip(TriangleClipper oldClipper) => false;
}
Row(
children: [
Container(
color: Colors.orange,
child: Padding(
padding: const EdgeInsets.all(4.0),
child: Text(
"a label",
),
),
),
ClipPath(
clipper: TriangleClipper(),
child: Container(
color: Colors.orange,
height: 23,
width: 20,
),
)
],
)
我虽然在ClipPath 的孩子中使用double.infinity 而不是固定大小可以解决这个问题,但这样做会使三角形消失(可能它变得太大以至于我看不到它或落后于某些东西)。
解决这个问题的正确方法是什么?我想我可以使用ClipPath 绘制梯形,但是如何使它的宽度适应Text 的长度?
【问题讨论】: