AnimationController
- Flutter kursu
- İleri seviye
- Ders 56/69
- 4 dk
AnimationController ile animasyonu denetlemeyi öğrenirsin.
AnimationController nedir?
AnimationController, animasyonun süresini, ilerlemesini ve başlatılmasını denetleyen nesnedir. vsync parametresi gerektirir; bu yüzden State sınıfı SingleTickerProviderStateMixin ile kullanılır. duration ile süreyi, forward ile başlatırsın.
class _MyState extends State<MyWidget> with SingleTickerProviderStateMixin {
late AnimationController ctrl;
@override
void initState() {
ctrl = AnimationController(
vsync: this,
duration: const Duration(seconds: 1),
);
super.initState();
}
}dispose ve repeat
AnimationController bellek sızıntısını önlemek için dispose metodunda kapatılmalıdır. repeat ile sürekli döngü, reverse ile geriye doğru çalıştırabilirsin. Değeri 0.0 ile 1.0 arasında bir double'dır.
@override
void dispose() {
ctrl.dispose();
super.dispose();
}Uygulama AnimationController oluştur
_EmptyVsync adında TickerProvider uygulayan bir sınıf tanımla. main içinde AnimationController oluştur (vsync: _EmptyVsync(), duration 1 saniye) ve value değerini yazdır.
Başlangıç kodu
import 'package:flutter/material.dart';
// _EmptyVsync sınıfını tanımla (TickerProvider uygular)
void main() {
// AnimationController oluştur (vsync ve duration 1 saniye) ve value değerini yazdır
}Örnek çözüm
import 'package:flutter/material.dart';
class _EmptyVsync implements TickerProvider {
@override
Ticker createTicker(TickerCallback onTick) => Ticker(onTick);
}
void main() {
final controller = AnimationController(
vsync: _EmptyVsync(),
duration: Duration(seconds: 1),
);
print(controller.value);
controller.dispose();
}Beklenen çıktı
0.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 AnimationController'ın vsync parametresi ne işe yarar?
- Widget boyutu verir
- Her frame'de animasyonu senkronize günceller Doğru cevap
- Çizim yapar
- Renk belirler
Açıklama: vsync, AnimationController'a her frame'de güncellenmesi için bir TickerProvider sağlar; bu da akıcı animasyon üretir.
2 vsync parametresini ekle
ctrl = AnimationController(
____: this,
duration: const Duration(seconds: 1),
);
ctrl = AnimationController(
vsync: this,
duration: const Duration(seconds: 1),
);
Açıklama: AnimationController'ın vsync parametresi bir TickerProvider bekler; State içinde this verilir.
3 AnimationController parçaları
| Kavram | Anlamı |
|---|---|
AnimationController |
Animasyonu denetler |
vsync |
Frame sağlayıcı |
SingleTickerProviderStateMixin |
vsync kaynağı |
forward |
Animasyonu başlatır |