0

関数の 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提供されたロジックが以前と同じである限り、再描画を防ぐにはどうすればよいですか?

4

1 に答える 1