1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| 在 Flutter 的 CustomPainter 中,shouldRepaint 是一个方法,用于判断是否需要重新绘制画布。
一、 它的作用: 当 Flutter 检测到 CustomPaint 需要重绘时,会调用 shouldRepaint(oldDelegate),来比较新的 CustomPainter 和旧的 oldDelegate 是否有变化。
如果返回: -true:会重新执行 paint() 方法,触发重绘。 -false:跳过重绘,提升性能。
二、常见用法示例:
class MyPainter extends CustomPainter { final Color color;
MyPainter(this.color);
@override void paint(Canvas canvas, Size size) { final paint = Paint()..color = color; canvas.drawCircle(Offset(50, 50), 40, paint); }
@override bool shouldRepaint(covariant MyPainter oldDelegate) { return oldDelegate.color != color; // 只有颜色变了才重绘 } }
三、总结一句话: shouldRepaint 用于避免不必要的重绘,提升性能,只有在数据发生变化时才返回 true,触发重新调用 paint()。
|