関数の dart 等価性チェックに問題があります。
shouldRepaint()
CustomPainter があり、そのメソッドを効率的に実装したいと考えています。
ペインターには関数フィールド ( 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
提供されたロジックが以前と同じである限り、再描画を防ぐにはどうすればよいですか?