bounty将在6天内到期。回答此问题可获得+150声望奖励。DolDurma正在寻找一个答案从一个有信誉的来源。
我在这个website中设计了一个简单的svg
,我将尝试在flutter中编程
我使用这种方法实现了代码:
class AppbarBackgroundPainter extends CustomPainter {
final Color color;
AppbarBackgroundPainter(this.color);
@override
void paint(Canvas canvas, Size size) {
final Paint paint = Paint()
..color = color
..style = PaintingStyle.fill;
/*Path path = Path()
..moveTo(1, 50)
..moveTo(0, 33)
..lineTo(0, 41)
..quadraticBezierTo(0, 40, 1, 40)
..lineTo(24, 40)
..cubicTo(27, 40, 27, 40, 29, 36)
..quadraticBezierTo(30, 34, 32, 34)
..lineTo(54, 34)
..lineTo(54, 33)
..lineTo(0, 33);*/
/* converted SVG to dart*/
Path path_0 = Path();
path_0.moveTo(0, size.height);
path_0.lineTo(0, size.height);
path_0.cubicTo(
0,
size.height * 0.9207522,
size.width * 0.006172833,
size.height * 0.8837156,
size.width * 0.01851852,
size.height * 0.8837156);
path_0.lineTo(size.width * 0.4444444, size.height * 0.8837156);
path_0.cubicTo(
size.width * 0.5000000,
size.height * 0.8837156,
size.width * 0.5000000,
size.height * 0.8837156,
size.width * 0.5370370,
size.height * 0.4392711);
path_0.cubicTo(
size.width * 0.5493833,
size.height * 0.2911222,
size.width * 0.5679019,
size.height * 0.2170489,
size.width * 0.5925926,
size.height * 0.2170489);
path_0.lineTo(size.width, size.height * 0.2170489);
path_0.lineTo(size.width, 0);
path_0.lineTo(0, 0);
path_0.close();
Paint paint_0_fill = Paint()..style = PaintingStyle.fill;
paint_0_fill.color = color;
canvas.drawPath(path_0, paint_0_fill);
canvas.drawPath(path, paint);
}
@override
bool shouldRepaint(CustomPainter oldDelegate) {
return true;
}
}
但是,我无法将图片中显示的内容应用到代码中。应该在appbar
背景下使用
1条答案
按热度按时间dfddblmv1#
我会抛弃
path_0
,简单地重新缩放path
:如果appbar应该从顶部开始,这不是一个完美的适合,但它应该提示你在正确的方向,而不需要重新编码整个路径(转换矩阵也应该允许翻译)
否则,您可以直接跳过此操作并使用flutter_svg