Sobes.tech
Middle

Flutter tətbiqində animasiya tətbiq etməyin uyğun üsulunu necə seçmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Seçim, animasiyanın mürəkkəbliyinə, tezliyinə və istifadəçi ilə qarşılıqlı əlaqənin dərəcəsinə bağlıdır.

Əsas üsullar:

  • ImplicitlyAnimatedWidgets: Sadə keçid animasiyaları widgetların xüsusiyyətlərinin dəyişdirilməsi üçün (ölçü, rəng, şəffaflıq). Xüsusiyyət dəyişikliklərini avtomatik olaraq animasiya edir.

    // Nümunə AnumatedContainer
    AnimatedContainer(
      duration: const Duration(seconds: 1),
      width: _size,
      height: _size,
      color: _color,
      alignment: Alignment.center,
      curve: Curves.fastOutSlowIn,
      child: const FlutterLogo(size: 75),
    );
    
  • AnimatedBuilder və AnimationController: Daha mürəkkəb və xüsusi animasiyalar üçün. AnimationController vasitəsilə aydın idarəetmə və AnimatedBuilder ilə yenidən çəkmə tələb edir.

    // RotationTransition nümunəsi ilə AnimationController
    class RotatingSquare extends StatefulWidget {
      @override
      _RotatingSquareState createState() => _RotatingSquareState();
    }
    
    class _RotatingSquareState extends State<RotatingSquare> with SingleTickerProviderStateMixin {
      late AnimationController _controller;
      late Animation<double> _animation;
    
      @override
      void initState() {
        super.initState();
        _controller = AnimationController(
          duration: const Duration(seconds: 2),
          vsync: this,
        )..repeat(); // Animasiyanı təkrarla
    
        _animation = CurvedAnimation(
          parent: _controller,
          curve: Curves.linear, // Xətti animasiya kənarı
        );
      }
    
      @override
      void dispose() {
        _controller.dispose();
        super.dispose();
      }
    
      @override
      Widget build(BuildContext context) {
        return RotationTransition( // Döndürmə widgeti
          turns: _animation,
          child: Container(
            width: 100,
            height: 100,
            color: Colors.blue,
          ),
        );
      }
    }
    
  • AnimatedWidget: AnimationController-ə bağlı olan təkrar istifadə edilə bilən animasiya widgetləri yaratmaq üçün abstrakt sinif. Sadələşdirir.

    // ScaleTransition nümunəsi (AnimatedWidget-dən irəli gəlir)
    ScaleTransition(
      scale: _animation,
      child: const FlutterLogo(size: 75),
    );
    
  • Hero animasiyaları: Ekranlar arasında keçid üçün, eyni widget bir ekrandan digərinə "atlayır".

    // Birinci ekranda
    Hero(tag: 'logo', child: FlutterLogo(size: 50));
    
    // İkinci ekranda
    Hero(tag: 'logo', child: FlutterLogo(size: 200));
    
  • CustomPaint: Xüsusi qrafik çəkmək və animasiya etmək üçün. Çizim və qrafika haqqında dərin bilik tələb edir.

Müqayisəli cədvəl:

Metod Çətinlik Animasiya üzərində nəzarət İstifadə
ImplicitlyAnimatedWidgets Aşağı Məhdud Sadə xüsusiyyət dəyişiklikləri
AnimatedBuilder/Controller Orta Tam Mürəkkəb/xüsusi animasiyalar
AnimatedWidget Orta Tam Yenidən istifadə edilə bilən animasiya widgetləri
Hero animations Aşağı Məhdud Ekranlar arasında keçidlər
CustomPaint Yüksək Tam Xüsusi qrafika

Ən sadə metodu seçin ki, animasiya tələblərinə cavab versin. Sadə hallar üçün ImplicitlyAnimatedWidgets üstünlük təşkil edir. Daha mürəkkəb və xüsusi ssenarilər üçün AnimatedBuilderAnimationController istifadə edin. Hero keçidlər üçün, CustomPaint isə mürəkkəb qrafika üçün.