为什么在Android上使用自定义绘画会出现如此糟糕的渲染故障?

时间:2019-03-08 15:18:01

标签: flutter

我正在尝试实现类似于Apple Watch戒指的戒指。我正在使用Canvas和CustomPaint小部件将这些圆环绘制为弧形。

canvas.drawArc(
  Rect.fromCircle(
      center: Offset(size.width / 2, size.height / 2), radius: radius - 10),
  -pi / 2,
  completion,
  false,
  Paint()
    ..style = PaintingStyle.stroke
    ..strokeWidth = 20
    ..color = color
    ..strokeCap = StrokeCap.round,

戒指看起来像这样: enter image description here

我有一个有状态的小部件,正在使用它来增加铃声。效果很好。

但是,我还有环的背景,该背景也使用Canvas绘制,该Canvas由弧,圆,阴影和自定义路径组成。我是 使用Stack小部件将一个放置在另一个顶部:

Stack(children: <Widget>[
      RingsBackground(),
      CustomPaint(
        size: Size(300, 300),
        painter: CirclePainter(streak: streak),
      ),
    ])

当我执行此操作并增加并完成一些圆时,我的渲染毛刺变得非常糟糕,但仅在Android而不是iOS上。有趣的是,如果我在android上关闭我的应用程序并重新打开(或切换到另一个应用程序并切换回),它可以正常工作。这就是小故障。

enter image description here

有人知道如何解决此问题或创建解决方法吗?我做错了吗?

1 个答案:

答案 0 :(得分:0)

因此,我发现只有在使用画布在CustomPaint小部件中提供的宽度和高度上绘制时才会发生这种情况。一旦我对所有内容进行了重组以使其符合这些范围,一切都将正常工作。