CustomPainter
- Flutter kursu
- İleri seviye
- Ders 52/69
- 4 dk
CustomPainter ile paint ve shouldRepaint öğrenirsin.
CustomPainter sınıfı
CustomPainter, çizimi yapan soyut sınıftır; iki metodu override etmen gerekir. paint metodu gerçek çizimi yapar, shouldRepaint ise yeniden çizilip çizilmeyeceğine karar verir. CustomPaint widget'ı bu sınıftan bir nesne bekler.
class CizgiPainter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
// çizim burada
}
@override
bool shouldRepaint(covariant CustomPainter eski) => false;
}shouldRepaint ne zaman true dönmeli
shouldRepaint true dönerse paint yeniden çağrılır. Sabit çizimde false dönmek performansı korur. Çizim bir state'e bağlıysa eski ile yeni durumu karşılaştırıp true dönebilirsin.
@override
bool shouldRepaint(covariant CustomPainter eski) =>
this.renk != (eski as MyPainter).renk;Uygulama Her zaman true dönen painter
MyPainter sınıfını tanımla; paint boş kalsın, shouldRepaint her zaman true dönsün. main içinde bir painter örneği alıp shouldRepaint sonucunu yazdır.
Başlangıç kodu
import 'package:flutter/material.dart';
// MyPainter sınıfını tanımla
void main() {
// shouldRepaint sonucunu yazdır
}Örnek çözüm
import 'package:flutter/material.dart';
class MyPainter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => true;
}
void main() {
final painter = MyPainter();
print(painter.shouldRepaint(painter));
}Beklenen çıktı
true
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 paint metodunun imzasında hangi iki parametre vardır?
- Color ve Offset
- BuildContext ve Widget
- Paint ve Path
- Canvas ve Size Doğru cevap
Açıklama: paint metodunun imzası void paint(Canvas canvas, Size size) şeklindedir; canvas üzerine çizilir, size çizim alanını verir.
2 paint metodunu override et
class MyPainter extends CustomPainter {
@override
void ____(Canvas canvas, Size size) {}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
class MyPainter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
Açıklama: paint metodu CustomPainter'ın çizimi yaptığı yerdir; imzası void paint(Canvas canvas, Size size) olmalıdır.
3 CustomPainter parçaları
| Kavram | Anlamı |
|---|---|
CustomPainter |
Soyut çizim sınıfı |
paint |
Çizimi yapan metod |
shouldRepaint |
Yeniden çizim kararı |
Canvas |
Çizim yüzeyi |