我想要一个CustomPainter
,它画一个三角形,顶部边缘有点圆,像这样:
的数据
我可以用这个画一个三角形:
class CustomStyleArrow extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
final Paint paint = Paint()
..color = Colors.white
..strokeWidth = 1
..style = PaintingStyle.fill;
final double triangleH = 10;
final double triangleW = 25.0;
final double width = size.width;
final double height = size.height;
final Path trianglePath = Path()
..moveTo(width / 2 - triangleW / 2, height)
..lineTo(width / 2, triangleH + height)
..lineTo(width / 2 + triangleW / 2, height)
..lineTo(width / 2 - triangleW / 2, height);
canvas.drawPath(trianglePath, paint);
final BorderRadius borderRadius = BorderRadius.circular(15);
final Rect rect = Rect.fromLTRB(0, 0, width, height);
final RRect outer = borderRadius.toRRect(rect);
canvas.drawRRect(outer, paint);
}
@override
bool shouldRepaint(CustomPainter oldDelegate) => false;
}
字符串
但是我不能得到圆角。我怎么能做到这一点?
另外,整个三角形应该尽可能动态,这样我就可以把它放在任何容器的顶部,最好的情况下,也传递位置,三角形应该在哪里。
3条答案
按热度按时间zbdgwd5y1#
1.首先,你不必自己绘制你的自定义油漆。事实上,实现复杂的绘图几乎是不可能的。相反,在这里,你可以使用这个Web应用程序,你可以在其中绘制你的绘画并导出它们的代码; Flutter Shape Maker。越来越漂亮的是,你可以在该应用程序中导入任何SVG文件,并将其代码导出为Dart File。这真的很完美!
1.在这里,我分享的图片,你可以按照
x1c 0d1x的数据
然后
的
注意:确保您选择了响应。这样,您可以在CustomPainter小部件中调整任何SVG文件的大小
1.让我们来看看你的问题。在这里,我选择了一个SVG文件为您的需要。(以后,你可以改变它根据您的愿望)
字符串
1.我对上面的web应用程序做了导入和导出操作,结果如下:
型
1.我创建了一个名为TextCloud的Widget;
型
1.然后,使用它
TextCloud(text: "Big Bang Theory is the best TV sitcom ever!")
结果;
祝你好运
kulphzqa2#
下面是我如何设法创建上述使用自定义油漆
首先定义一个自定义的painter类,就像我下面所做的那样
字符串
这就是你将如何实现它。
型
上面的代码应该会给给予一个指针,指向任何用它 Package 的小部件。
这是输出,谢谢。
的数据
vaqhlq813#
从k.spoyraz那里得到灵感,我得到了一个完美的解决方案,你可以用
ArrowIndicator
Package 任何小部件,并将箭头放在你想要的地方:字符串