У меня проблема с проверкой равенства дротиков для функции.
У меня есть CustomPainter, и я хочу эффективно реализовать его метод shouldRepaint()
.
Есть поле функции (ColorResolver
) в художнике, который дает значение y и получает цвет для рисования на линии, я хочу, чтобы эта логика c обрабатывалась вне художника.
проверьте этот код:
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
logi c такие же, как и раньше?