CodeBlanks Logo Icon CodeBlanks

Özet - İleri animasyon

AnimationController ve Hero'yu birleştirerek geçiş yaparsın.

AnimationController ve Hero birleşimi

Bir ekran geçişinde Hero animasyonu çalışırken arka planda AnimationController ile ek bir animasyon çalıştırabilirsin. Hero tag'i ile widget taşınırken, controller örneğin boyut değişimini Tween veya doğrudan değer ile yönetir.

Hero(
  tag: 'photo',
  child: Container(
    width: 50 + ctrl.value * 50,
    height: 50,
  ),
)

Uygulama Hero ve AnimationController birlikte

_EmptyVsync sınıfını tanımla. main içinde ctrl adlı AnimationController oluştur (vsync: _EmptyVsync(), duration 1 saniye). Ayrıca tag'i 'photo' ve child'ı Container(width: 50) olan bir Hero widget'ı oluştur ve Hero'nun tipini yazdır.

Başlangıç kodu

main.dart
import 'package:flutter/material.dart';

// _EmptyVsync sınıfını tanımla (TickerProvider uygular)

void main() {
  // ctrl ve tag 'photo' olan Hero oluştur, hero tipini yazdır
}

Örnek çözüm

main.dart
import 'package:flutter/material.dart';

class _EmptyVsync implements TickerProvider {
  @override
  Ticker createTicker(TickerCallback onTick) => Ticker(onTick);
}

void main() {
  final ctrl = AnimationController(
    vsync: _EmptyVsync(),
    duration: Duration(seconds: 1),
  );
  final hero = Hero(
    tag: 'photo',
    child: Container(width: 50),
  );
  print(hero.runtimeType);
  ctrl.dispose();
}

Beklenen çıktı

Hero

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hero ve AnimationController'ı birlikte kullanınca ne elde edilir?

  • Widget sayacı
  • Ekran geçişi sırasında ek animasyon Doğru cevap
  • Yalnızca yazı rengi
  • Bellek temizliği

Açıklama: Hero ekran geçişini yönetirken AnimationController alt animasyonları (boyut, renk vb.) çalıştırabilir; ikisi birlikte zengin geçişler üretir.

2 duration parametresini ekle

Soru
final ctrl = AnimationController(
  vsync: this,
  ____: const Duration(seconds: 2),
);
Cevap
final ctrl = AnimationController(
  vsync: this,
  duration: const Duration(seconds: 2),
);

Açıklama: AnimationController'ın süresi duration parametresine Duration nesnesi verilerek ayarlanır.

3 Animasyon birleşimi eşleşmeleri

Kavram Anlamı
AnimationController Süre ve ilerleme denetimi
Hero Ekranlar arası widget taşıma
Tween Ara değer üretici
tag Hero'yu eşleştiren değer

İleri seviye bölümündeki tüm dersler