【发布时间】:2020-02-09 15:57:11
【问题描述】:
在颤振中我想将此布局设计为小部件
当前实现的代码有这样的结果:
你能帮我解决这个设计的一些问题吗?
因为高度/重量和角应该是可定制的,我应该可以在其中放入一些小部件,例如:
class MessageClipper extends CustomClipper<Path> {
MessageClipper({this.borderRadius = 15});
final double borderRadius;
@override
Path getClip(Size size) {
double width = size.width;
double height = size.height;
double rheight = height - height / 3;
double oneThird = width / 3;
final path = Path()
..lineTo(0, rheight - borderRadius)
..cubicTo(0, rheight - borderRadius, 0, rheight, borderRadius, rheight)
..lineTo(oneThird, rheight)
..lineTo(width/2-borderRadius, height-borderRadius)
..cubicTo(width / 2 - borderRadius, height - borderRadius, width / 2,
height, width / 2 + borderRadius, height - borderRadius )
..lineTo(2 * oneThird, rheight)
..lineTo(width-borderRadius, rheight)
..cubicTo(width - borderRadius, rheight, width, rheight, width,
rheight - borderRadius)
..lineTo(width, 0)
..lineTo(0, 0);
return path;
}
@override
bool shouldReclip(CustomClipper<Path> oldClipper) => true;
}
【问题讨论】:
-
@kherel 你能帮我写这篇文章吗?谢谢
-
见 stackoverflow.com/a/57943257/2252830 ,它会像这样制作气球:i.stack.imgur.com/DDXMA.png - 但如何定制它取决于你
-
那么你看到上面的答案了吗?您是否看到如何以简单的方式做到这一点并使其“可点击”?使用以下答案的复杂代码的原因是什么?
-
@pskink 下面的答案并不像我想的那样复杂,而且在更少的代码中易于使用
-
是的,这是一种解决方法,因为作者无法制作气球状形状并通过使用标准装饰和自定义油漆将其组合 - 而应该通过定义自定义来完成形状 (
ShapeBorder) 或通过定义自定义剪辑 (CustomClipper) - 如果你想使用这样的解决方法,它取决于你......