CodeBlanks Logo Icon CodeBlanks

Tween ve CurvedAnimation

CurvedAnimation ile yumuşak eğri animasyonu öğrenirsin.

Tween ve CurvedAnimation

Tween, başlangıç ve bitiş değerleri arasında ara değer üretir; AnimationController'dan gelen 0.0-1.0 ilerlemesini gerçek değerlere dönüştürür. CurvedAnimation, bu ilerlemeyi bir Curves eğrisiyle yumuşatır.

final tween = Tween(begin: 0.0, end: 100.0);
final curved = CurvedAnimation(
  parent: ctrl,
  curve: Curves.easeInOut,
);
final value = tween.transform(curved.value);

Curves seçimi

Curves sınıfı farklı yumuşatma eğrileri sunar: Curves.linear düz, Curves.easeIn yavaş başlayan, Curves.bounceOut zıplayan. CurvedAnimation'ı Tween ile birlikte kullanarak hem değer aralığını hem de yumuşatmayı kontrol edersin.

Uygulama Tween ve CurvedAnimation kullan

_EmptyVsync sınıfını tanımla. main içinde ctrl adlı AnimationController oluştur (vsync: _EmptyVsync(), duration 1 saniye). CurvedAnimation ile ctrl'yi Curves.easeIn ile sar. Tween(begin: 0.0, end: 100.0)'in transform'una curved.value ver ve sonucu yazdır.

Başlangıç kodu

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

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

void main() {
  // ctrl oluştur, CurvedAnimation ile sar (curve easeIn),
  // Tween ile 0-100 dönüşümü yapıp transform değerini 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 curved = CurvedAnimation(parent: ctrl, curve: Curves.easeIn);
  final tween = Tween(begin: 0.0, end: 100.0);
  print(tween.transform(curved.value));
  ctrl.dispose();
}

Beklenen çıktı

0.0

Soru ve cevaplar

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

1 CurvedAnimation ne işe yarar?

  • Animasyonu durdurur
  • Belleği temizler
  • Widget rengini ayarlar
  • Doğrusal ilerlemeyi bir eğriyle yumuşatır Doğru cevap

Açıklama: CurvedAnimation, controller'ın doğrusal 0.0-1.0 ilerlemesini bir Curves eğrisiyle dönüştürerek yumuşak hareket sağlar.

2 CurvedAnimation'a parent ver

Soru
final curved = CurvedAnimation(
  ____: ctrl,
  curve: Curves.easeInOut,
);
Cevap
final curved = CurvedAnimation(
  parent: ctrl,
  curve: Curves.easeInOut,
);

Açıklama: CurvedAnimation'ın parent parametresi kaynak animasyonu (genelde AnimationController) alır.

3 Tween ve CurvedAnimation eşleşmeleri

Kavram Anlamı
Tween Başlangıç ve bitiş değerleri
CurvedAnimation Eğriyle yumuşatır
Curves.easeInOut Yavaş başlayıp biten eğri
parent Kaynak animasyon

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