Sobes.tech
Junior — Middle

Flutter'da animasyonların uygulanması ve özellikleri hakkında bilgi verebilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Flutter'da animasyonlar, düzgün ve özelleştirilebilir geçişler oluşturmayı sağlayan yerleşik bir animasyon çerçevesi kullanılarak gerçekleştirilir. Temel özellikler:

  • İmplicite Animasyonlar — basit animasyonlar, sadece widget özelliğini değiştirmek yeterlidir, örneğin AnimatedContainer, AnimatedOpacity. Bunlar otomatik olarak animasyonlanır.
  • Eksplisit Animasyonlar — daha esnektir, bir animasyon denetleyicisi (AnimationController) gerektirir, zaman, eğriler ve animasyon durumlarını yönetmeye olanak tanır.
  • Tween — animasyon için değer aralığını belirler (örneğin, 0'dan 1'e).
  • AnimationController — animasyon süresini kontrol eder, başlatabilir, durdurabilir, tekrar edebilir.
  • CurvedAnimation — değişim eğrisini belirlemeye olanak tanır (ease-in, ease-out vb.).

Örnek: Boyut değişimi için açık animasyon:

class MyAnimatedWidget extends StatefulWidget {
  @override
  _MyAnimatedWidgetState createState() => _MyAnimatedWidgetState();
}

class _MyAnimatedWidgetState extends State<MyAnimatedWidget> with SingleTickerProviderStateMixin {
  late AnimationController _controller;
  late Animation<double> _animation;

  @override
  void initState() {
    super.initState();
    _controller = AnimationController(
      duration: const Duration(seconds: 2),
      vsync: this,
    );
    _animation = Tween<double>(begin: 100, end: 200).animate(
      CurvedAnimation(parent: _controller, curve: Curves.easeInOut),
    );
    _controller.repeat(reverse: true);
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return AnimatedBuilder(
      animation: _animation,
      builder: (context, child) {
        return Container(
          width: _animation.value,
          height: _animation.value,
          color: Colors.blue,
        );
      },
    );
  }
}

Özellikler:

  • Motor seviyesinde render sayesinde yüksek performans.
  • Animasyonların kombinlenebilmesi.
  • Dokunma ve etkileşimli animasyonlara destek.
  • Flutter widgetleriyle iyi entegrasyon.