Если одним из факторов, делающих мобильное приложение привлекательным, является его дизайн, то вторым таким фактором являются анимации. Все согласятся, что если в приложении все элементы остаются "сухими", то оно выглядит лучше с какой-либо анимацией.
С помощью 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),
),
);
}
}
Здесь мы добавили .animate().fadeIn(duration: 500.ms).slideX(duration: 700.ms, curve: Curves.easeInCubic) к виджету Container. .animate() задает параметры анимации, fadeIn() делает виджет медленно появляющимся (изменение прозрачности от 0 до 1) и slideX() показывает его движение по оси X слева направо. Мы также указали продолжительность, чтобы анимацию можно было комфортно наблюдать. Когда вы развернете мобильное приложение на реальном устройстве, вы можете настроить эти числа соответствующим образом.
Вот и результат.
Для более подробного ознакомления вы можете посмотреть видео ниже.