我对函数的 dart 相等性检查有问题。
我有一个 CustomPainter,我想shouldRepaint()
有效地实现它的方法。
画家中有一个函数字段(ColorResolver
),它给出了y值并获取在线绘制的颜色,我希望在画家之外处理这个逻辑。
检查此代码:
typedef ColorResolver = Color Function(double value);
class MyPainter extends CustomPainter {
final ColorResolver colorResolver;
MyPainter(this.colorResolver);
@override
void paint(Canvas canvas, Size size) {
for (double y = 0; y <= size.height; y += 10) {
final paint = Paint()..color = colorResolver(y);
canvas.drawLine(Offset(0, y), Offset(size.width, y), paint);
}
}
@override
bool shouldRepaint(MyPainter old) => old.colorResolver != colorResolver;
}
只要提供的ColorResolver
逻辑与以前相同,如何防止重绘?