Легкие переходы навигации во Flutter: анимация скольжения влево при нажатии навигатора

Во Flutter создание плавных и визуально привлекательных переходов навигации — отличный способ улучшить взаимодействие с пользователем вашего приложения. Одним из популярных эффектов перехода является анимация «скольжения влево» при добавлении нового экрана в стек навигатора. В этой статье блога мы рассмотрим различные методы достижения этого эффекта, используя разговорные термины, и предоставим примеры кода, которые помогут вам в этом.

Методы:

  1. Использование PageRouteBuilder:
    Класс PageRouteBuilder во Flutter позволяет настраивать анимацию перехода между маршрутами. Чтобы создать анимацию слайда влево, вы можете определить собственный PageRouteBuilder и указать нужную анимацию с помощью Tween.
Navigator.push(
  context,
  PageRouteBuilder(
    pageBuilder: (context, animation, secondaryAnimation) => NewScreen(),
    transitionsBuilder: (context, animation, secondaryAnimation, child) {
      var begin = Offset(1.0, 0.0);
      var end = Offset.zero;
      var tween = Tween(begin: begin, end: end);
      var curvedAnimation = CurvedAnimation(
        parent: animation,
        curve: Curves.easeInOut,
      );
      return SlideTransition(
        position: tween.animate(curvedAnimation),
        child: child,
      );
    },
  ),
);
  1. Использование виджета SlideTransition.
    Виджет SlideTransition предоставляет простой способ применения анимации слайдов к дочерним виджетам. Объедините его с AnimationController, чтобы контролировать ход анимации.
AnimationController _animationController;
Animation<Offset> _animation;
@override
void initState() {
  super.initState();
  _animationController = AnimationController(
    vsync: this,
    duration: Duration(milliseconds: 500),
  );
  _animation = Tween<Offset>(
    begin: Offset(1.0, 0.0),
    end: Offset.zero,
  ).animate(
    CurvedAnimation(
      curve: Curves.easeInOut,
      parent: _animationController,
    ),
  );
  _animationController.forward();
}
Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => NewScreen(),
  ),
);
  1. Использование стороннего пакета.
    Если вы предпочитаете более оптимизированный подход, в экосистеме Flutter доступно несколько сторонних пакетов, которые предлагают готовые навигационные переходы. Одним из популярных пакетов является пакет «animations», который предоставляет различные виджеты анимации, включая переходы между слайдами.

Чтобы использовать пакет «animations», добавьте его в файл pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter
  animations: ^2.0.0

Затем импортируйте пакет и используйте виджет SlideTransitionX для создания анимации слайда влево:

import 'package:animations/animations.dart';
Navigator.push(
  context,
  PageRouteBuilder(
    pageBuilder: (context, animation, secondaryAnimation) => NewScreen(),
    transitionsBuilder: (context, animation, secondaryAnimation, child) {
      return SlideTransitionX(
        position: animation.drive(
          Tween<Offset>(
            begin: Offset(1.0, 0.0),
            end: Offset.zero,
          ),
        ),
        child: child,
      );
    },
  ),
);

В этой статье мы рассмотрели три различных метода создания анимации скольжения влево при нажатии навигатора во Flutter. Используя PageRouteBuilder, виджет SlideTransition или сторонние пакеты, такие как «анимации», вы можете легко создавать привлекательные переходы навигации для своих приложений Flutter. Поэкспериментируйте с этими методами, настройте их в соответствии с потребностями вашего приложения и предоставьте пользователям интуитивно понятную и визуально привлекательную навигацию.