我需要在屏幕上绘制大约 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
?