Анимация флаттера при навигации назад - PullRequest
0 голосов
/ 15 апреля 2020

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

Есть ли способ сделать возможным использование Curves.elasticIn при навигации назад

1 Ответ

1 голос
/ 15 апреля 2020

Используя пример:

    transitionDuration: Duration(milliseconds: 5000),
    pageBuilder: (context, animation, secondaryAnimation) => page,
    transitionsBuilder: (context, animation, secondaryAnimation, child) {
      var begin = Offset(1.0, 0.0);
      var end = Offset.zero;
      var curve = Curves.elasticIn;
      var tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve));
      print("primary: ${animation}");
      return SlideTransition(
        position: animation.drive(tween),
        child: child,
      );
    },
  );

Параметр animation в transitionBuilder содержит свойство status, которое возвращает AnimationStatus.

Простое

var curve = animation.status == AnimationStatus.reverse ? Curves.elasticIn : Curves.elasticOut ;

сделает.

...