Анимации во Flutter | пакет flutter_animate

Анимации во Flutter | пакет flutter_animate

 Если одним из факторов, делающих мобильное приложение привлекательным, является его дизайн, то вторым таким фактором являются анимации. Все согласятся, что если в приложении все элементы остаются "сухими", то оно выглядит лучше с какой-либо анимацией.

С помощью Flutter вы можете легко добавить анимации без установки нескольких пакетов, например, с использованием готовых виджетов (AnimatedContainer, AnimatedCrossFade и т. д.). Для удобства добавления анимаций мы рассмотрим пакет flutter_animate в этой статье.

Давайте сначала рассмотрим страницу, которая просто показывает контейнер.

class MyPage extends StatelessWidget {
  const MyPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('flutter_animate | Пакет блога'),
        centerTitle: true,
      ),
      body: Center(
        child: Container(
          width: 150,
          height: 150,
          decoration: BoxDecoration(
            color: Colors.red,
            borderRadius: BorderRadius.circular(14)
          ),
        ),
      ),
    );
  }
}

 

Как видно на изображении, на странице посреди находится красный контейнер, и нет никакой анимации. Теперь давайте, используя пакет flutter_animate, сделаем так, чтобы при открытии страницы красный контейнер появлялся с анимацией. Для этого сначала добавим flutter_animate пакет.


flutter pub add flutter_animate

После добавления пакета внесем изменения в код.

В результате код будет выглядеть следующим образом.

 


class MyPage extends StatelessWidget {
	const MyPage({super.key});

	@override
	Widget build(BuildContext context) {
		return Scaffold(
		  appBar: AppBar(
		    title: const Text('flutter_animate | Пакет блога'),
		    centerTitle: true,
		  ),
		  body: Center(
		    child: Container(
		      width: 150,
		      height: 150,
		      decoration: BoxDecoration(
		        color: Colors.red,
		        borderRadius: BorderRadius.circular(14)
		      ),
		    ).animate().fadeIn(duration: 500.ms).slideX(duration: 700.ms, curve: Curves.easeInCubic),
		  ),
		);
	}
}

 

video_2024-02-06_11-40-39.mp4 [video-to-gif output image]

Здесь мы добавили .animate().fadeIn(duration: 500.ms).slideX(duration: 700.ms, curve: Curves.easeInCubic) к виджету Container. .animate() задает параметры анимации, fadeIn() делает виджет медленно появляющимся (изменение прозрачности от 0 до 1) и slideX() показывает его движение по оси X слева направо. Мы также указали продолжительность, чтобы анимацию можно было комфортно наблюдать. Когда вы развернете мобильное приложение на реальном устройстве, вы можете настроить эти числа соответствующим образом.

Вот и результат.

Для более подробного ознакомления вы можете посмотреть видео ниже.

 

Scorpion IT Company SCORPION IT COMPANY Scorpion IT Company SCORPION IT COMPANY Scorpion IT Company SCORPION IT COMPANY Scorpion IT Company SCORPION IT COMPANY Scorpion IT Company SCORPION IT COMPANY Scorpion IT Company SCORPION IT COMPANY Scorpion IT Company SCORPION IT COMPANY Scorpion IT Company SCORPION IT COMPANY Scorpion IT Company SCORPION IT COMPANY Scorpion IT Company SCORPION IT COMPANY Scorpion IT Company SCORPION IT COMPANY