0

我需要在屏幕上绘制大约 5000 个小点 - 它们几乎都是相同的(大约 6 种颜色变体) - 但它们的位置会改变,并且需要以 60 fps 的速度这样做(所以重新绘制整个东西当他们从 A 点移动到 B 点时顺利)。

我试着用 a 来做到这一点CustomPainter,它做得很好(大约 20 fps),但是当我BoxShadow在它们周围添加漂亮的东西(如发光())时,它开始滞后很多(5 fps)。

class MyPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    for (final dot in allDots) {
      final dotPaint = Paint()
        ..color = dot.color
        ..style = PaintingStyle.fill;

      // This will change every time
      final point = dot.getPoint();

      // Those two will be *identical*, but with different point (and 6 different colors)
      canvas.drawCircle(point, 8, dotPaint);
      // This makes it *lag* a lot more - even tho it looks *identical* for every dot
      canvas.drawShadow( ... );  
    }
  }
}

有没有办法以某种方式缓存这些图纸,然后将它们显示在不同的位置?还是有比 更快的东西CustomPainter

4

0 回答 0